2013-03-10 21 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

相關問題