现象:
工程 SlidiMenu+fragment!在fragment里我用到了FragmentTabHost,当我用fragment切换的时候,返回到带有FragmentTabHost页面的时候,报错了(见下图)
04-30 13:36:17.289: E/AndroidRuntime(14828): FATAL EXCEPTION: main
04-30 13:36:17.289: E/AndroidRuntime(14828): java.lang.IllegalStateException: Recursive entry to executePendingTransactions
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1439)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:283)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.view.View.dispatchAttachedToWindow(View.java:6165)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1122)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1127)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.view.ViewGroup.addViewInner(ViewGroup.java:2011)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.view.ViewGroup.addView(ViewGroup.java:1871)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.view.ViewGroup.addView(ViewGroup.java:1828)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.view.ViewGroup.addView(ViewGroup.java:1808)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.os.Handler.handleCallback(Handler.java:587)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.os.Handler.dispatchMessage(Handler.java:92)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.os.Looper.loop(Looper.java:130)
04-30 13:36:17.289: E/AndroidRuntime(14828): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-30 13:36:17.289: E/AndroidRuntime(14828): at java.lang.reflect.Method.invokeNative(Native Method)
04-30 13:36:17.289: E/AndroidRuntime(14828): at java.lang.reflect.Method.invoke(Method.java:507)
04-30 13:36:17.289: E/AndroidRuntime(14828): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
代码,见下图
mTabHost = (FragmentTabHost) view.findViewById(android.R.id.tabhost);
mTabHost.setup(ma.getApplicationContext(), ma.getSupportFragmentManager(),
R.id.realtabcontent);
解决办法:
mTabHost = (FragmentTabHost) view.findViewById(android.R.id.tabhost);
mTabHost.setup(ma.getApplicationContext(),getChildFragmentManager(),
R.id.realtabcontent);
setup的时候,加载的是child