Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android popBackStack()似乎没有效果_Android_Android Fragments - Fatal编程技术网

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()