【问题标题】:Android - Clearing Navigation BackstackAndroid - 清除导航回栈
【发布时间】:2015-06-26 02:06:34
【问题描述】:

我有 4 页。

从 page_1 > page_2 > page_3 > page_4。

一旦用户到达 page_3 并单击一个按钮,它就会导航到 page_4。单击按钮后,我想清除所有导航历史记录,因此当用户返回 page_4 时,应用程序退出而不是返回 page_3。

我试过了:

    Intent intent = new Intent(this, page_4.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    finish();

但是什么也没发生。我仍然可以返回 page_3、page_2 等。我该如何做到这一点,以便当用户单击 page_3 上的按钮时,他会转到 page_4,并且从 page_4 开始不应该有任何导航历史记录?

【问题讨论】:

    标签: java android back-stack android-navigation


    【解决方案1】:

    我不确定这些方法是否适合您。第一种方法是从page_3转到page_4时加上FLAG_ACTIVITY_TASK_ON_HOME

    Intent intent = new Intent(this, page_4.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
    startActivity(intent);
    

    因此,一旦您在 page_4 中按下 BACK 按钮,它会首先将您引导至 HOME 活动(MainActivity),然后您可以再次按下 BACK 按钮以退出该活动。

    来自文档:

    如果在传递给Context.startActivity() 的 Intent 中设置,此标志将导致将新启动的任务放置在当前主活动任务(如果有的话)之上。也就是说,即使这不是他们看到的最后一个活动,从任务中按回总是会让用户回到家中。这只能与FLAG_ACTIVITY_NEW_TASK结合使用。

    第二种方法是,在清单中的活动中设置android:noHistory="true"。将此属性应用于 page_1 到 page_4。但是这种方法有两个缺点。首先,您的活动完全没有回栈。第二,您使用此属性设置的活动会在您按下 HOME 按钮或接到来电时被销毁。我没找到这个话题,请CMIIW。

    【讨论】:

      【解决方案2】:

      对于所有其他活动,例如 page_3、page_2、page_1,

      使用 FLAG_ACTIVITY_NO_HISTORY(如果设置,新活动不会保存在历史堆栈中。):

      intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
      

      【讨论】:

        【解决方案3】:

        尝试设置 Intent.FLAG_ACTIVITY_NO_HISTORY 和 Intent.FLAG_ACTIVITY_TASK_ON_HOME

        来自文档 Intent.FLAG_ACTIVITY_NO_HISTORY

        如果设置,新活动不会保存在历史堆栈中。立刻 用户离开它,活动就完成了。这可能 也可以使用 noHistory 属性设置。

        Intent.FLAG_ACTIVITY_TASK_ON_HOME

        如果在传递给的 Intent 中设置 Context.startActivity(),这个标志会导致一个新的启动任务 放置在当前家庭活动任务之上(如果有 一)。也就是说,从任务中按回总是会返回用户 回家,即使那不是他们看到的最后一次活动。这只能 与 FLAG_ACTIVITY_NEW_TASK 结合使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多