Вы хотите startActivityForResult()
. Когда вы переходите от C
до D
, вместо использования startActivity()
используйте вместо этого startActivityForResult()
. Затем, когда вы хотите вернуться с D
до C
, вы используете setResult()
, который может включать объект Intent
с extras
, чтобы вернуться к C
.
Я не рекомендую сделать это в onBackPressed()
, если вы не имеете , потому что этого не будет, чего ожидает пользователь. Вместо этого вы должны вернуться с этими данными с таким событием, как щелчок Button
.
Итак, в C
вы сделаете что-то вроде
Intent i = new Intent(new Intent(C.this, D.class);
startActivityForResult(i, 0);
, затем в D
, когда вы будете готовы возвратить
Intent i = new Intent();
i.putExtra(); // insert your extras here
setResult(0, i);
, тогда, когда вы вернетесь к C
, вы введете этот метод (, взятый из Документов )
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
// A contact was picked. Here we will just display it
// to the user.
startActivity(new Intent(Intent.ACTION_VIEW, data));
/*
can also get the extra sent back through data
using data.getStringExtra("someKey");
assuming the extra was a String
*/
}