popBackStack()似乎没有任何效果

时间:2014-01-02 14:57:37

标签: android android-fragments

使用this question

中的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(); 

1 个答案:

答案 0 :(得分:2)

尝试使用commitAllowingStateLoss()

popBackStackImmediate()