我的应用有3个UI级别,每个级别都有自己的片段,A - > B - > C。 我希望可选允许我的应用用户直接导航到顶级片段,即来自C - > A不调用B. 即,如果他们按下后退按钮,我仍然希望允许用户从C-> B开始,但是在C片段中,我有一个" Home"按钮,它直接将它们带到A.这是我要冲洗后台堆栈的操作。 另外,我希望用户能够使用后退按钮从B-> A开始,因此我将A和B都添加到后台堆栈。
我尝试了this SO post中的选项,但在每种情况下,即使我使用fm_.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
同时检查了这个帖子,似乎建议使用popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
任何人都可以建议一种方法来弹出整个Backstack而不需要在弹出的片段上调用onCreateView吗?
答案 0 :(得分:1)
不要添加backStack行来从片段B-> C
从A-> B开始使用
HighlightFragment highlightFragment=new HighlightFragment(FirstReaderScreen.this);
getSupportFragmentManager()
.beginTransaction()
.add(R.id.LL_Fragment, highlightFragment) // LL_Fragment is container
.addToBackStack(null)
.commit();
进入B-> C使用
HighlightFragment highlightFragment=new HighlightFragment(FirstReaderScreen.this);
getSupportFragmentManager()
.beginTransaction()
.add(R.id.LL_Fragment, highlightFragment)
.commit();
不要添加行.addtobackstack(null)
这对我有用
答案 1 :(得分:0)
我估计您正在使用替换片段。 如果你不想弹回
,尝试使用begintransaction.hide / show来管理1个活动中的许多片段//on Activity
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(containerId, new FragmentA(), fragmentA.getClass().getSimpleName());
fragmentTransaction.commit();
//inside fragment A to jump fragment without PopBackStack
getFragmentManager().beginTransaction().hide(this).commit();
getFragmentManager().beginTransaction().show(new FragmentB()).commit();
答案 2 :(得分:0)
当需要在BottomNavigationView
public void clearBackStack() {
int backStackEntryCount = mFragmentActivity
.getSupportFragmentManager()
.getBackStackEntryCount();
for (int i = 0; i < backStackEntryCount; i++) {
mFragmentActivity.getSupportFragmentManager().popBackStack();
}
}