Android 清除活动堆栈不起作用
我的活动有以下设置: A(无历史)->B->C->D->E 因此,当我从Android 清除活动堆栈不起作用,android,Android,我的活动有以下设置: A(无历史)->B->C->D->E 因此,当我从activity D开始activity E时,我希望E成为根活动,并清除后堆栈的其余部分 我遵循了许多帖子中提到的解决方案,即在我的意图中添加以下标志: final Intent explicitIntent = new Intent(this, E.class); explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
activity D
开始activity E
时,我希望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);
但是,活动E
(之前未运行)不会成为后堆栈的根。相反,只要从后台堆栈中删除活动D
,C
和B
,如果我按下后退按钮,它们仍然存在
那么,我想在SDK<11中实现的目标是否真的不可能,如下所述:?在您的代码中,只需替换以下行:
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
使用以下行:
explicitIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
试试这个代码。像这样开始你的活动 这在活动B中
int k=1;
Intent i=new Intent(B.this,C.class);
startActivityForResult(i,k);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==1) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, null);
finish();
}
}
这在活动C中
int j=1;
Intent i=new Intent(C.this,D.class);
startActivity(i,j);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==1) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, null);
finish();
}
}
这在活动D中
int j=1;
Intent i=new Intent(D.this,E.class);
startActivityForResult(i,j);
setResult(RESULT_OK, null);
finish();
并将其放入活动C
int j=1;
Intent i=new Intent(C.this,D.class);
startActivity(i,j);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==1) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, null);
finish();
}
}
这在活动B中
int k=1;
Intent i=new Intent(B.this,C.class);
startActivityForResult(i,k);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==1) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, null);
finish();
}
}
最后,我只是按照拉塞尔的建议做了(在对我的问题的评论中)
当输入活动E时,我在活动B、C、D上调用finish以将它们从堆栈中删除。要从E返回到A,请查看下面的链接,类似的问题。这可能对你有帮助@Rasel否,我想在从一个活动返回到另一个活动时退出应用程序Call finish。也不起作用(我想是因为活动E尚未运行)