Android 清除活动堆栈不起作用

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)

我的活动有以下设置:

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); 
        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尚未运行)