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