【问题标题】:Clearing activity stack is not working清除活动堆栈不起作用
【发布时间】:2012-04-13 23:08:40
【问题描述】:

我的活动有以下设置:

A (noHistory) -> B -> C -> D -> E

所以当我从activity D 开始activity E 时,我希望E 成为根活动并清除其余的后台堆栈。

我遵循了这里许多帖子中提到的解决方案,即在我的 Intent 中添加以下标志:

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 从返回堆栈中删除,如果我按下返回按钮,CB 仍然存在。

那么我想要在 SDK Clear the entire history stack and start a new activity on Android?

【问题讨论】:

  • 您想在后按时从 E 转到 A?
  • 检查下面的链接,一个类似的问题。它可能会帮助你。 How to clear the Android Stack of activities?
  • @Rasel 不,我想在我从 E 回来时离开应用程序
  • 从一个 Activity 转到另一个 Activity 时调用完成。

标签: android


【解决方案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();

      }
   }

【讨论】:

    【解决方案2】:

    在您的代码中只需替换以下行:

    explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    

    这些行:

    explicitIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    

    试试这个代码。

    【讨论】:

    • 也没有工作(我猜是因为活动 E 还没有运行)
    【解决方案3】:

    最后我只是按照 Rasel 的建议做了(在我的问题的 cmets 中) 当进入活动 E 时,我调用了活动 B、C、D 的完成以将它们从堆栈中移除。

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 2018-12-01
      相关资源
      最近更新 更多