【发布时间】:2015-05-28 09:46:44
【问题描述】:
我有一个关于 android 片段 backstack 的问题。这是我的情况。
// 我还不能发布图片,所以我传递了一个链接。
如您所见,我想从 Fragment 1 转到 Fragment 2,最后再转到 Fragment 3,但是当我在 Fragment 3 按下返回按钮时,我想返回 Fragment 1。
我按照图片上的描述执行此操作,但是当我按下返回按钮时没有任何反应,当我第二次按下它时,应用程序正在关闭。
我的 BackStack 看起来像预期的那样,我只有“主要”条目。 另外,当我添加到 backstack Fragment 2 时,我可以从 Frag3 正常返回到 Frag2 到 Frag1(但这不是我想要的)。
//编辑:
第一:
我稍微调试一下我的应用程序,我注意到当我按下后退按钮时,Fragment 从 backstack 中弹出并调用了他的生命周期方法,但当前的 Fragment(Fragment 3)什么都不做(我记录了他的 onPause 和 onStop 方法和他们没有被调用)。也许这是个问题?
第二:
我找到了一个解决方案,我实现了 onBackStackChange 侦听器,在 onBackStacChange 方法中,我只需将 Fragment3 替换为 Fragment1。这行得通,但它正确吗?
【问题讨论】:
-
将第一个片段添加到 backstack
-
@DDsix 我以前试过这个,没有帮助。
-
使用.... if (fmManager.getBackStackEntryCount() > 0) { fmManager.popBackStack(fmManager.getBackStackEntryAt(fmManager.getBackStackEntryCount()-2).getId(), fmManager.POP_BACK_STACK_INCLUSIVE ); } -2 是因为你想往后退两个 2 片段
标签: android android-fragments back-stack