我已经成功地使用putExtra从活动A发送TextViews并将活动B发送到TableRow。我可以使用SavePreferences毫无问题地保留下次查看。我的问题是下次我将一些条目放入活动A并发送到活动B时如何在活动B中创建一个新的TableRow,它不会破坏以前保存的那个?
经过一些 编辑 后,我现在就这样了 它从Activity A生成TableRow!除了我仍然无法 保存 该行或制作一个 New One 一个。
TableLayout01 = (TableLayout) findViewById(R.id.TableLayout01);
TableRow tableRow1 = new TableRow(this);
Intent in = getIntent();
if (in.getCharSequenceExtra("blah") != null) {
final TextView resultTextView = new TextView(this);
resultTextView.setText(in.getCharSequenceExtra("blah"));
tableRow1.addView(resultTextView);
Intent is = getIntent();
if (is.getCharSequenceExtra("no") != null) {
final TextView date = new TextView(this);
date.setText(is.getCharSequenceExtra("no"));
tableRow1.addView(date);
TableLayout01.addView(tableRow1, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,1.0f));
答案 0 :(得分:1)
如果您想添加 new tableRow ,首先必须获取表格布局的参考。您可以使用findViewById
方法完成此操作。
TableLayout mainLayout = (TableLayout) findViewById(R.id.your_id);
现在,您应该根据已定义的tableRow的相同布局创建 new tableRow 。要做到这一点,你需要膨胀布局。您将使用LayoutInflater
根据布局创建新视图。
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
newTableRow = LayoutInflater.from(getBaseContext()).inflate(R.layout.your_table_row, parent, false);//general use
要更好地了解layoutInflater的作用,请阅读LayoutINflater Documentation。
此时,您可以在 tableRow 中设置textView。 Original author
final TextView = (TextView) newTableRow.findViewById(R.id.blahblah);
setmsg.setText(in.getCharSequenceExtra("blah"));
经过一些操作后,你应该在tableLayout中添加tableRow。
tableLayout.addView(newTableRow)
答案 1 :(得分:0)
只需在清单文件中指定即可创建活动B的单个实例。
android:launchMode="singleInstance"
为要插入表行的数据创建静态变量。使用其getter和setter设置活动A中的数据并获取活动B中的数据。