我的活动有以下设置:
A(noHistory) - > B - > C - > D - > ë
因此,当我从activity E
启动activity D
时,我希望E
成为根活动并清除其余的后备堆栈。
我遵循了许多帖子中提到的解决方案,即将以下标志添加到我的意图中:
final Intent explicitIntent = new Intent(this,
E.class);
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(explicitIntent);
但是,Activity E
(以前没有运行)不会成为后台堆栈的根。相反,只有Activity D
从后堆栈中删除,如果按下后退按钮,C
和B
仍然存在。
所以我想在SDK中实现真正不可能的< 11如下所述:Clear the entire history stack and start a new activity on Android?
答案 0 :(得分:1)
开始这样的活动..
活动B
int k=1;
Intent i=new Intent(B.this,C.class);
startActivityForResult(i,k);
活动C
int j=1;
Intent i=new Intent(C.this,D.class);
startActivity(i,j);
活动D
int j=1;
Intent i=new Intent(D.this,E.class);
startActivityForResult(i,j);
setResult(RESULT_OK, null);
finish();
并将其放入活动C
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==1) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, null);
finish();
}
}
活动B
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==1) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, null);
finish();
}
}
答案 1 :(得分:0)
在您的代码中,只需替换以下行:
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
这些行:
explicitIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
试试这段代码。
答案 2 :(得分:0)
最后我就像Rasel建议的那样(在我的问题的评论中) 当进入活动E时,我在活动B,C,D上调用完成以使它们离开堆栈。