我有2个活动,这是第二个活动的布局(摘录):
<TextView
android:id="@+id/user"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
在第一个Activity中从JSON解析相应的值,并调用第二个Activity中的函数setValues:
String user = oj.getString("user");
String city = oj.getString("city");
act2.setValues(user, city);
在第二个Activity中,代码如下所示:
user = (TextView) findViewById(R.id.user);
city = (TextView) findViewById(R.id.city);
public void setValues(String user, String city) {
Log.d("user", user); // THIS IS BEING RETURNED
this.user.setText(user);
this.city.setText(city);
}
正在调用此函数并返回“user”,但TextView
中的文本未更改。
使用Runnable:
Intent intent = new Intent(this, Act2.class);
startActivity(intent);
run();
public void run() {
Log.d("run", "it's running"); // IS RETURNED
desc.setValues(user, city);
}
// SECOND ACTIVITY
public void setValues(String user, String city) {
Log.d("user", user); // IS RETURNED
this.user.setText(user);
this.city.setText(city);
}
不幸的是结果仍然相同:TextViews仍为空。
答案 0 :(得分:1)
这里我们不能在你的场景中使用意图吗?
android使用intent ....
Vogella Ariticle
活动1中的-
Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", "This value one for ActivityTwo ");
i.putExtra("Value2", "This value two ActivityTwo");
startActivity(i);
在活动2中 - 在onCreate finction
Bundle extras = getIntent().getExtras();
if (extras == null) {
return;
}
// Get data via the key
String value1 = extras.getString(Intent.EXTRA_TEXT);
if (value1 != null) {
// Do something with the data
}
答案 1 :(得分:0)
确保 UIThread 上正在运行setValues()
方法。请参阅:Painless Threading和Processes and Threads。