【问题标题】:Need for popBackStack in onBackPressedonBackPressed中需要popBackStack
【发布时间】:2015-02-17 14:59:23
【问题描述】:

请帮助我了解调用“onBackPressed”时后退堆栈的本机工作方式。我注意到,即使在视觉上它回到了前一个片段,应该弹出的片段(我退出的片段)仍然在后堆栈中。这是为什么? 然后我将不得不求助于

    @Override
    public void onBackPressed() {
        if(getFragmentManager().getBackStackEntryCount() > 0)
             getFragmentManager().popBackStack();
    }

这似乎违反直觉。 那么在一个不在后堆栈顶部的片段上是真的吗?没有太多的堆栈那么...

编辑:澄清一下,我的问题是为什么 onBackPressed 没有弹出返回堆栈,并且需要额外调用才能弹出它作为解决方法?如果是这样的话我很好,但我想确认一下。

【问题讨论】:

    标签: android android-fragments android-fragmentactivity


    【解决方案1】:

    Android 应用有一组 Activity。当在一个活动上调用 onBackPressed 时,它会弹回上一个活动并完成当前活动

    如果您有一个带有片段的活动,您将拥有另一个堆栈,即活动的片段堆栈,如果您按照solution 建议的方式覆盖 onBackPressed,则您可以控制它,因此您的活动在所有片段都被弹回之前不会完成

    【讨论】:

    • 关于片段:为什么后退按钮没有立即弹出栈顶?
    • 这是因为 onBackPressed 在活动级别上被调用。它作用于活动,而不是片段。片段是应用程序的责任。在这里你有另一种处理方式:stackoverflow.com/a/22552865/4576054
    【解决方案2】:

    添加以下行:

    addToBackStack("Some String").commit();
    

    您可以找到解决方案 Here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多