2013-03-10 3 views
6

Я вызываю activityB из activityA и передаю объект класса с использованием намерения.Android - Как отправить данные обратно на вызывающую активность

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

АктивностьB начинается нормально, а также я могу извлечь данные. В activityB я изменяю объект данных. Я хочу отправить этот модифицированный объект данных обратно в activityA, когда вызывается actionB.onDestroy().

Любые советы?

Вот мой код:

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/communicationating.html – Fattie

ответ

9

Используйте ActivityResult.

  1. Использование startActivityForResult(int, Intent)
  2. Чтобы установить информацию в активность B, использовать setResult(RESULT_OK, data) (где данные представляют собой Намерение)
  3. Переопределение onActivityResult(int, int, Intent) и поймать data -Intent

активность А, начиная со 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()', но данные Intent в 'activityA.onActivityResult()' равно – anirus

+0

@anirus, он должен работать в 'onDestroy()'. – poitroae

+0

Я все еще получаю 'NullPointerException'. Это мой код. – anirus

Смежные вопросы