更改android中单独活动中的textview

时间:2011-04-05 01:56:51

标签: android android-activity textview

我有一个从数据库中提取信息的登录页面,然后我想使用这些信息在新页面/活动上填充不同的文本视图。我可以使用textview来更改我的提交按钮的活动,但是当我尝试更改第二个活动的textview时,它只是崩溃了(应用程序意外停止了)。

这是我更改textview的代码(其中txtID是我在单独活动上的textview)

TextView test2 = (TextView) findViewById(R.id.txtID);
test2.setText(test);

我的xml用于单独活动

<TextView android:text="TextView" android:id="@+id/txtID"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

哦,我正在为我的登录页面使用tableview,然后使用我的其余页面的标签。我对这个很新,很抱歉,如果这很简单,但任何帮助都会非常感激!! : - )

3 个答案:

答案 0 :(得分:7)

您不希望直接触摸另一个Activity的UI元素。您可以使用bundles来回传递信息。这是一个例子:

假设我们有活动A,它有一些信息作为它想要传递的字符串,成为活动B中TextView的文本。

//Setup our test data
String test = "Some text";
//Setup the bundle that will be passed
Bundle b = new Bundle();
b.putString("Some Key", test);
//Setup the Intent that will start the next Activity
Intent nextActivity = new Intent(this, ActivityB.class); 
//Assumes this references this instance of Activity A
nextActivity.putExtras(b);

this.startActivity(nextActivity);

所以现在在Activity B的onCreate方法中,我们可以获得该String并将其作为文本分配给TextView

public void onCreate(Bundled savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); //Setup some layout, set to your own

    String test = getIntent().getExtras().getString("Some Key");
    TextView test2 = (TextView) findViewById(R.id.txtID);
    test2.setText(test);     
}

答案 1 :(得分:0)

我可能会让每个单独的Activity都处理它自己的显示,而不是试图让Activity 1直接更新Activity 2的显示,这就像你正在做的那样。

The Notepad Tutorial演示了一个包含两个Activity的应用程序,其中一个Activity调用另一个Activity,传入数据。 (请看一下Notepadv3中的onListItemClick。)您可以按照此模型将数据从活动1传递到活动2,然后活动2使用收到的数据来处理其正确的显示。

如果您仍然遇到问题(例如您的应用程序崩溃),请发布复制问题所需的完整最小代码。请注意记事本教程和the Hello, World Tutorial包含调试步骤,这可能有助于您找出确切的问题。

答案 2 :(得分:0)

Andy ...如果您尝试直接触摸其他活动中的UI小部件,您的应用就会崩溃。在那里,意外地完成了。相反,请考虑在活动之间传递不可变的有状态对象。例如,可以使用startActivityForResult完成此操作。我有一些示例代码here