java.lang.IllegalStateException:通过快速切换递归进入executePendingTransactions
我正在使用其中包含选项卡的操作栏,每个选项卡都是一个片段。除非在标签之间快速切换,否则一切都很好。当我做快速切换,我得到这个错误:java.lang.IllegalStateException:通过快速切换递归进入executePendingTransactions
java.lang.IllegalStateException: Recursive entry to executePendingTransactions
at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source)
at android.support.v4.app.FragmentManagerImpl$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
这里是我的代码OnTapSelected
if (mFragment == null) {
mFragment = (SherlockFragment) SherlockFragment.instantiate(mActivity, mClass.getName(), mArgs);
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
什么办法可以解决这个问题?或者,如果没有,我怎么能至少赶上这个异常(像在哪里把try/catch),所以我的应用程序不会崩溃?
谢谢
而不是使用附加,尝试使用显示/隐藏。你需要引用所有的片段,但是如果你将它们全部添加,然后显示正确的片段并隐藏可能修复它的其余片段。
确实,它确实解决了它。谢谢so muuch – Snake
@Snake请写出代码,你已经修复了,thnxu –
尽管如此:这将需要更多的内存,因为所有的碎片都需要堆在堆上; OutOfMemory异常可能发生。 (我知道这是非常古老的,但人们仍然遵循这个提示)。 –
你在哪里提交fragmenttransaction? – toadzky
我不是。当我添加一个标签监听器时,我只在构造函数中进行提交。但onTabSelected,我没有提交后添加/ attach.should我? – Snake
如果您没有提交,则没有任何更改实际得到应用。我不认为它会自动提交。这里是[文档](http://developer.android.com/reference/android/app/FragmentTransaction.html#commit()) – toadzky