displayBackStack()
方法
我的应用程序中有以下代码(用于调试)。 displayBackStack()
被调用3次:在popBackStack()
后addBackStack()
之后显示初始状态。堆栈的初始状态有2个条目。在popBackStack()
之后,我希望看到1个条目,但我仍然看到相同的2,所以我的期望必定是不正确的。问题是什么?
更新:
根据Gavi的建议,在pop之后可以看到堆栈只有1个条目。然后问题变成了addBackStack()
调用之后的堆栈状态现在只有1个条目。这里似乎没有addBackStackImmediate()
FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager();
Utilities.displayBackStack(fragmentManager); // initial state
Game1Fragment fragment = new Game1Fragment();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentManager.popBackStack();
fragmentTransaction.commit();
// use these 2 statements instead to see the pop (@Gavi)
//fragmentManager.popBackStackImmediate();
//fragmentTransaction.commitAllowingStateLoss();
Utilities.displayBackStack(fragmentManager); // after pop
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(mainFragmentContainerLayout.getId(), fragment, tag); // so that back key goes back to menu, not exit the app
fragmentTransaction.addToBackStack"(Game1Fragment"); // so that back key goes back to menu, not exit the app
Utilities.displayBackStack(fragmentManager);
fragmentTransaction.commit();
答案 0 :(得分:2)
尝试使用commitAllowingStateLoss()
和
popBackStackImmediate()