Android popBackStack()似乎没有效果
使用来自的Android popBackStack()似乎没有效果,android,android-fragments,Android,Android Fragments,使用来自的displayBackStack()方法 我的应用程序中有下面的代码(用于调试)displayBackStack()三次:显示初始状态,在popBackStack()之后,在addBackStack()之后。堆栈的初始状态有2个条目。在popBackStack()之后,我希望看到1个条目,但我仍然看到相同的2个条目,因此我的预期肯定是不正确的。有什么问题 更新: 根据Gavi的建议,可以看到堆栈在pop之后只有一个条目。然后问题就变成了addBackStack()调用之后的堆栈状态现在
displayBackStack()
方法
我的应用程序中有下面的代码(用于调试)<调用code>displayBackStack()三次:显示初始状态,在popBackStack()
之后,在addBackStack()之后。堆栈的初始状态有2个条目。在popBackStack()
之后,我希望看到1个条目,但我仍然看到相同的2个条目,因此我的预期肯定是不正确的。有什么问题
更新:
根据Gavi的建议,可以看到堆栈在pop之后只有一个条目。然后问题就变成了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();
尝试使用commitAllowingStateLoss()
及
因此,这些语句确实允许我“实时”查看堆栈的更改。Afa我明白了,我需要这个只是为了调试,有什么理由不这样做吗?这并不完全正确-我提到的方法与“你的”方法在系统赋予它们的优先级(它们的执行)上有所不同。您可以阅读特定案例和优先级的文档。。。
popBackStackImmediate()