将附加功能传递给靠背堆上的活动(在BACK印刷机上)

时间:2014-10-23 18:12:49

标签: android

如何将额外内容传递给backstack之前的活动?当用户按下BACK按钮时,我想做类似的事情:

intent.putExtra("playlist", playlist);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

我想它必须在 onStop()方法中,但我如何识别将要恢复的活动?我发现像 getParentActivityIntent()这样的东西,但是我无法清楚地理解文档,我不知道它是否是我需要的。

----- ------ EDIT

我会尝试以其他方式解释。

在ActivityA中

我启动一个新的ActivityB并传递一些Extra:

Intent intent = new Intent(this, ActivityB.class);
int var = 3;
intent.putExtra("var", var);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
在ActivityB中我可以做到:

if (getIntent().hasExtra("var")) {
  var = getIntent().getIntExtra("var");
  var = var + 2;        
}

现在按下BACK按钮后,用户返回ActivityA。其中 var = 3 。但我想从ActivityB传递var的新值。我想在ActivityA var = 5 中。我怎样才能做到这一点?我在文档中找不到对"之前"的引用。活动(在本例中为ActivityB中的ActivityA)。

1 个答案:

答案 0 :(得分:3)

我认为您尝试做的事情是不可能的,但您至少有两种选择。

不使用startActivity,但在ActivityA中使用startActivityForResult并覆盖onActivityResult。在活动B中,您必须在onBackPressed中实现以下内容:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();

更多信息:How to manage `startActivityForResult` on Android?

第二个选项是在整个应用程序期间创建共享变量(例如by extend android.app.Application class)。在ActivityB中设置此变量并在ActivityA中读取。