【问题标题】:How to clear current activity stack when start another activity which belong to another stack启动属于另一个堆栈的另一个活动时如何清除当前活动堆栈
【发布时间】:2016-07-23 06:29:15
【问题描述】:

例如:A 启动 B,B 启动 C,A 和 C 属于 'Hello'-stack,B 属于 'World'-stack,当用户在 Activity C 中按下返回按钮时,它会返回到 A。 注1:B 表示很多活动,而不仅仅是一项活动, 比如 A 开始 B1,B1 开始 B2,B2 开始 B3....,Bn 开始 C。 注意2:当用户按下时,我需要 Bs 保留在堆栈中,直到 C 启动 回到B3,它应该回到b2。

我实际上已经通过使用 startActivityForResult 实现了这个需求,我只是想知道有没有什么方法可以使用堆栈来实现这个。

【问题讨论】:

标签: android activity-stack


【解决方案1】:

从活动A到活动B时,如下:

 Intent i=new Intent(ActivityA.this,ActivityB.class);
 startActivity(i);

由于您想从 B 打开 C 但不希望 B 在堆栈中,因此请执行以下操作:

 Intent i=new Intent(ActivityB.this,ActivityC.class);
 startActivity(i);
 ActivityB.this.finish();

所以当你按 C 时,你会自动得到 A 而不是 B。

【讨论】:

    【解决方案2】:

    从 B 启动 Activity C 时只需调用 finish() 即可。 然后在activity C中重写onBackPressed()。并添加代码来启动Activity A。

    【讨论】:

    • 对不起,我没有清楚地描述我的问题..在 B 顶部的“世界”堆栈中有多个活动。
    • 一目了然的活动流程
    • 是的.. 每当您调用一个新活动时,只需在 startActivity() 之后调用 finish() 即可销毁当前活动。在 Activity C 上,重写 onBackPressed() 方法。在方法中,启动activity A..
    • 只需调用 Intent in=new Intent(ActivityC.this,ActivityA.class);开始活动(在);在 ActivityC 的 onBackPressed() 方法中。就是这样。
    • 嘿@empty-yo..你的问题已经结束了啊?我的意思是你的问题解决了没有?如果是,请将我的答案标记为已接受,否则请回复您的问题。否则此问题将处于待处理状态。
    【解决方案3】:

    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 或者 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 对我有用。

    【讨论】:

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