FragmentManager popBackStack不起作用 - Bug?

时间:2013-01-22 10:19:33

标签: android android-fragments android-sdk-tools

我正在使用此代码清理我的后台堆栈到我的主视图:

while(mFragmentManager.getBackStackEntryCount() > 1) {
            mFragmentManager.popBackStack(null, 0);
}

我很确定此代码之前有效,但现在backstack计数没有改变,并且没有删除Fragment,这会导致内存不足异常,因为while循环一直在运行。

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

4 个答案:

答案 0 :(得分:11)

您可能正在寻找popBackStackImmediate()。这会立即执行后筹码弹出。

答案 1 :(得分:7)

您也可以在.executePendingTransactions();

之后使用popBackStack();

答案 2 :(得分:6)

我当然不会认为popBackStack()会立即产生影响,而你的循环似乎也是如此。

答案 3 :(得分:3)

说明了什么文件 popBackStack()

  

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

所以在mFragmentManager.popBackStack(null, 0);之后,在你的事件被完全处理之前,你的背书堆不是空的。

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