android - onBackPressed中需要popBackStack

标签 android android-fragments android-fragmentactivity

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

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

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

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

最佳答案

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

如果您有一个带有 fragment 的 Activity ,您将拥有另一个堆栈,即 Activity 的 fragment 堆栈,如果您以 solution 的方式覆盖 onBackPressed,则可以控制该堆栈。建议,因此您的 Activity 在弹出所有 fragment 之前不会完成

关于android - onBackPressed中需要popBackStack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564343/

相关文章:

java - Android 应用程序因方向更改而崩溃

java - 在 Android 中添加选项菜单

java - 在 fragment B 中执行操作后如何更新 fragment A

Android Studio Windows : Debugger process finished with exit code -1073741515 (0xC0000135)

android - GCM XMPP 数据包中是否可能有非字符串值?

android - Google Play 控制台订单收费 0

java - 获取 ListView 中所有复选框的列表

java - Android fragment getArguments 返回 null

java - NullPointerException - Drawable.setBounds - 可能是由于 fragment 转换

android - 为什么会调用fragment的onCreateView、onCreate、onActivityCreated