3个片段:
我可以通过BottomNavigationView从C-fragment转到A-fragment,我必须清除堆栈,但不知道为什么它不起作用。 当我从第一个片段移到第二个片段并按回按钮时,片段彼此重叠,直到退出应用程序。
如果我按后退按钮转到C-> B-> A,然后按后退按钮,则一切正常。
打开片段的代码:
fragmentManager
.beginTransaction()
.replace(R.id.fl_container, new FragmentA())
.commit();
fragmentManager
.beginTransaction()
.replace(R.id.fl_container, new FragmentB())
.addToBackStack(null)
.commit();
fragmentManager
.beginTransaction()
.replace(R.id.fl_container, new FragmentC())
.addToBackStack(null)
.commit();
BackPressed:
Fragment fragment = fragmentManager.findFragmentById(R.id.fl_container);
if (fragment instanceof IRootFragment) {
if (fragmentManager.getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStack(
fragmentManager.getBackStackEntryAt(0).getId(),
FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
super.onBackPressed();
} else {
fragmentManager.popBackStackImmediate();
}
我正在尝试所有这些方法:Is this the right way to clean-up Fragment back stack when leaving a deeply nested stack?
fragmentManager.getBackStackEntryCount()始终> 0