【发布时间】:2018-11-06 14:36:16
【问题描述】:
我想要的正确行为是:
Fragment A -> Fragment B -> Fragment C -> Fragment A
我目前在做什么:
- 当我想从B回到A时,我使用
popBackStack()仍然在这里 一切顺利。 - 当我想从 B 转到 C 时,我删除 B 并 添加 C.(片段数 2,backStackEntryCount 数 3,替换相同)。
- 当我想从 C 回到 A 时,我可以使用
popBackStack()但 BackStackEntryCount 仍将包含 B 的条目。
我真的需要backStackEntryCount 与管理器中包含的片段相同。
有人知道我做错了什么吗?
我的代码:
Fragment fragment1 = fragmentManager.findFragmentByTag("NavigationFragment_");
if (fragment1 != null) {
fragmentManager.beginTransaction()
.setTransition(TRANSIT_FRAGMENT_FADE)
.remove(fragment1)
.commit();
}
fragmentManager.beginTransaction()
.addToBackStack(backstack)
.setTransition(TRANSIT_FRAGMENT_OPEN)
//.remove(getFragmentManager().findFragmentByTag(NavigationFragment_.class.getSimpleName()))
.add(R.id.fragmentContainer, fragment, fragment.getClass().getSimpleName())
.commit();
我一直在寻找解决方案一段时间没有结果,所以请不要将其标记为重复。
提前致谢。
【问题讨论】:
-
你能提供一个SSCCE吗?
-
什么意思? :')
-
@LucaCorradi 正如我所写,它没有任何效果并解决了我的问题,即使根据文档是相同的:developer.android.com/reference/android/support/v4/app/…
-
@m0skit0 我一般做一个控件,如果FragmentB在片段管理器中不存在则什么都不会被删除,我忘记添加了,现在在项目示例中修复它
标签: java android android-fragments fragmentmanager fragment-backstack