我怎样才能将多余的东西传递给后台的先前活动?当用户按下“返回”按钮时,我想执行以下操作:

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()之类的东西,但我无法清楚地理解文档,也不知道这是否是我所需要的。

- - -编辑 - - -

我将尝试以其他方式进行解释。

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


现在,按下“返回”按钮后,用户将返回到ActivityA。其中var =3。但是我想从ActivityB传递var的新值。我想在ActivityA中拥有var =5。我该怎么做?我在文档中找不到对“上一个”活动的引用(在本例中为从ActivityB到ActivityA的引用)。

最佳答案

我认为您尝试执行的操作是不可能的,但是您至少有两个选择。

不使用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中读取。

关于android - 将多余的内容传递到后堆栈的 Activity 中(按BACK时),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26534588/

10-10 22:57