我遇到了 android fragment 后退堆栈的问题。这就是我的情况。
//我还不能发布图像,所以我传递了一个链接。
如您所见,我想从 fragment 1 转到 fragment 2,最后转到 fragment 3,但是当我在 fragment 3 处按后退按钮时,我想返回到 fragment 1。
我这样做就像我在图片中描述的那样,但是当我按后退按钮时什么也没有发生,当我第二次按它时,应用程序正在关闭。
我的 BackStack 看起来如预期,我上面只有“Main”条目。 另外,当我添加到 backstack Fragment 2 时,我可以正常从 Frag3 返回到 Frag2 再到 Frag1 (但这不是我想要的)。
//编辑:
第一:
我稍微调试了我的应用程序,我注意到当我按下后退按钮时,Fragment 会从 backstack 中弹出,并调用他的生命周期方法,但当前 fragment (Fragment 3)什么也不做(我记录了他的 onPause 和 onStop 方法,并且他们没有被调用)。也许这是一个问题?
第二:
我找到了一个实现 onBackStackChange 监听器的解决方案,并且在 onBackStacChange 方法中我只需将 Fragment3 替换为 Fragment1。这可行,但是正确吗?
最佳答案
使用...来实现
FragmentManager fmManager = activity.getSupportFragmentManager();
if (fmManager.getBackStackEntryCount() > 0) { fmManager.popBackStack(fmManager.getBackStackEntryAt(fmManager.getBackStackEntryCount()-2).getId(), fmManager.POP_BACK_STACK_INCLUSIVE); }
-2是因为你想后退两个2 fragment
关于android - 在android中从第三个 fragment 返回到第一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502964/