2013-03-10 48 views
6

我从activityA调用activityB并使用intent传递一个类对象。Android - 如何将数据发送回调用活动

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

activityB

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

老实说,我认为你最好还是有一个接口 - 这很容易https://developer.android.com/ training/basics/fragments/communicate.html – Fattie 2016-11-27 23:59:06

回答

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

活动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 
+0

我应该在activityB中设置数据意图?我尝试在'activityB.onDestroy()'中设置它,但'activityA.onActivityResult()'中的Intent数据为null – anirus 2013-03-11 00:32:38

+0

@anirus它应该在'onDestroy()'中工作。 – poitroae 2013-03-11 15:04:01

+0

我仍然得到'NullPointerException'。这是我的代码。 – anirus 2013-03-13 00:09:14

相关问题