Android FragmentManager popBackStack不工作-Bug?

Android FragmentManager popBackStack不工作-Bug?,android,android-fragments,android-sdk-tools,Android,Android Fragments,Android Sdk Tools,我正在使用此代码清除返回到主视图的备份: while(mFragmentManager.getBackStackEntryCount() > 1) { mFragmentManager.popBackStack(null, 0); } 我很确定这段代码以前是有效的,但是现在backstack计数没有改变,也没有片段被删除,这会导致内存不足异常,因为while循环一直在运行 是否有人知道,它是否有问题,或者SDK工具的最新版本中是否存在错误。我不知道是什么导致了这个

我正在使用此代码清除返回到主视图的备份:

while(mFragmentManager.getBackStackEntryCount() > 1) {
            mFragmentManager.popBackStack(null, 0);
}
我很确定这段代码以前是有效的,但是现在backstack计数没有改变,也没有片段被删除,这会导致内存不足异常,因为while循环一直在运行


是否有人知道,它是否有问题,或者SDK工具的最新版本中是否存在错误。我不知道是什么导致了这个问题。

我当然不会认为
popbackbackstack()
会立即产生效果,而您的循环似乎会产生这种效果。

您也可以使用
.executePendingTransactions()
popBackStack()之后

您可能正在查找
popbackackimmediate()
。这会立即执行后堆栈弹出。

文档中说明的内容
popBackStack()

将所有后台堆栈状态弹出到具有给定标识符的状态。 此函数是异步的——它将请求排入pop队列,但 在应用程序返回到其当前位置之前,不会执行该操作 事件循环

所以在
MFFragmentManager.popBackStack之后(null,0)在事件完全处理之前,backback不会为空


使用
PopBackbackImmediate()
在当前事件本身中立即清空它。

看看这个;代码在我的onOptionsItemSelected方法中,正如我所说,它以前是有效的。我已经三周左右没有使用该函数了,现在它似乎不再起作用了。另外,如果您引用的是没有参数的.popbackbackstack(),这也会产生同样的效果,但不起作用。但是,您可以尝试
mffragmentmanager.popbackbackstackimmediate(null,0)
尽管您最好调用
MFFragmentManager.popBackStackImmediate(mainTag,MFFragmentManager.POP_BACK_STACK_include)
并放弃循环,没错。下面的两个答案解释了如何处理@Nickolaus的问题。你救了我一天,兄弟!非常感谢你!