6

私はactivityAからactivityBを呼び出し、インテントを使用してクラスオブジェクトを渡します。

Intent intentB = new Intent(v.getContext(), activityB.class);
intentB.putExtra("data", data); //data is a class object
startActivity(intentB);

activityBは正常に開始され、データを抽出することもできます。activityBでは、データオブジェクトを変更しています。activityB.onDestroy()が呼び出されたときに、この変更されたデータオブジェクトをactivityAに送り返したいと思います。

何かアドバイス?

これが私のコードです:

activityA、開始Intent

Intent i = new Intent(this, activityB.class);
i.putExtra("object", Class.object);
startActivityForResult(i, 1);

activityA、意図を捉える:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == 1) {    
        object = data.getParcelableExtra("object"); //the Class implements Parcelable
  }
}

アクティビティB

protected void onDestroy() {
  Intent data = new Intent();
  setResult(RESULT_OK, data) 
  finish(); // ends current activity
}
4

1 に答える 1

9

ActivityResultを利用します。

  1. 使用するstartActivityForResult(int, Intent)
  2. アクティビティBで情報を設定するにsetResult(RESULT_OK, data)は、(データがインテントである場合)を使用します。
  3. -IntentをオーバーライドonActivityResult(int, int, Intent)してキャッチしますdata

アクティビティA、開始Intent

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

アクティビティA、データの取得:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == 1) {    
        // make use of "data" = profit
  }
}

アクティビティB:

Intent data = new Intent();
setResult(RESULT_OK, data) 
finish(); // ends current activity
于 2013-03-10T19:10:04.773 に答える