0

2 つのアクティビティがあります。これは 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" />

対応する値が最初のアクティビティで JSON から解析され、2 番目のアクティビティ内で関数 setValues が呼び出されます。

String user = oj.getString("user");
String city = oj.getString("city");

act2.setValues(user, city);

2 番目のアクティビティでは、コードは次のようになります。

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

この関数が呼び出され、「ユーザー」が返されますが、TextViews 内のテキストは変更されません。

実行可能な場合:

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 は空のままです。

4

2 に答える 2

1

ここでは、シナリオでインテントを使用できませんか?

インテントを使用したアンドロイド....

ヴォゲラ記事

活動中 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 関数で

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
}
于 2012-05-30T12:17:24.843 に答える
0

setValues()メソッドがUIThreadで実行されていることを確認してください。参照:痛みのないスレッド化およびプロセスとスレッド

于 2012-05-30T12:24:24.283 に答える