0

我已经成功地能够使用 putExtra 从 Activity A 发送 TextViews 并将 Activity B 发送到 TableRow 中。我可以毫无问题地使用 SavePreferences 来保留下一次的视图。我的问题是下次我将一些条目放入 Activity A 并发送到 Activity B 如何在 Activity B 中创建一个不会破坏先前保存的 TableRow 的新 TableRow?

经过一些编辑后,我现在拥有它,它从活动 A 生成 TableRow!除了我仍然无法保存该行或制作一个行。

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));
4

2 回答 2

1

如果要添加新的 tableRow,首先必须获取表格布局的参考。您可以使用方法来做到这一点findViewById

TableLayout mainLayout = (TableLayout) findViewById(R.id.your_id);

现在,您应该基于与您已经定义的 tableRow 相同的布局创建一个新的 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 文档

此时,您可以在tableRow中设置 textView 。原作者

final TextView = (TextView) newTableRow.findViewById(R.id.blahblah);
setmsg.setText(in.getCharSequenceExtra("blah"));  

经过一些操作后,您应该在 tableLayout 中添加 tableRow。

tableLayout.addView(newTableRow)
于 2013-05-22T19:58:26.580 回答
0

只需通过在清单文件中指定来创建活动 B 的单个实例。

android:launchMode="singleInstance"

为要插入表行的数据创建一个静态变量。使用它的 getter 和 setter 从活动 A 中设置数据并在活动 B 中获取数据。

于 2013-05-24T16:35:23.573 回答