Android - 如何将数据发送回调用活动

ani*_*rus 6 android-intent android-activity

我从activityA调用activityB并使用intent传递一个类对象.

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

activityB开始很好,我也能够提取数据.在activityB中,我正在修改数据对象.我想在调用activityB.onDestroy()时将此修改后的数据对象发送回activityA.

有什么建议?

这是我的代码:

activityA,开始Intent:

Intent i = new Intent(this, activityB.class);
i.putExtra("object", Class.object);
startActivityForResult(i, 1);
Run Code Online (Sandbox Code Playgroud)

activityA,捕捉意图:

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

activityB

protected void onDestroy() {
  Intent data = new Intent();
  setResult(RESULT_OK, data) 
  finish(); // ends current activity
}
Run Code Online (Sandbox Code Playgroud)

poi*_*oae 9

利用ActivityResult.

  1. 使用 startActivityForResult(int, Intent)
  2. 要在活动B中设置信息,请使用setResult(RESULT_OK, data)(其中数据是Intent)
  3. 覆盖onActivityResult(int, int, Intent)并捕获data-Intent

活动A,开始Intent:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
Run Code Online (Sandbox Code Playgroud)

活动A,捕获数据:

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

  if (requestCode == 1) {    
        // make use of "data" = profit
  }
}
Run Code Online (Sandbox Code Playgroud)

活动B:

Intent data = new Intent();
setResult(RESULT_OK, data) 
finish(); // ends current activity
Run Code Online (Sandbox Code Playgroud)