ViewPager: recursive entry in executePendingTransactions

I have a ViewPager in a ViewPager and I get this exception

09-07 18:30:26.392: ERROR/AndroidRuntime(841): FATAL EXCEPTION: main java.lang.IllegalStateException: Recursive entry to executePendingTransactions at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1331) at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:422) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:86) at android.support.v4.view.ViewPager.populate(ViewPager.java:453) at android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563) at android.view.View.dispatchAttachedToWindow(View.java:7974) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1857) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1862) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1862) at android.view.ViewGroup.addViewInner(ViewGroup.java:2968) at android.view.ViewGroup.addView(ViewGroup.java:2824) at android.support.v4.view.ViewPager.addView(ViewPager.java:537) at android.view.ViewGroup.addView(ViewGroup.java:2781) at android.view.ViewGroup.addView(ViewGroup.java:2761) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:848) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1041) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:616) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1359) at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:422) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:86) at android.support.v4.view.ViewPager.populate(ViewPager.java:453) at android.support.v4.view.ViewPager.onAttachedToWindow(ViewPager.java:563) at android.view.View.dispatchAttachedToWindow(View.java:7974) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1857) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1862) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1862) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1862) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1862) at android.view.ViewRoot.performTraversals(ViewRoot.java:726) at android.view.ViewRoot.handleMessage(ViewRoot.java:1944) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:126) at android.app.ActivityThread.main(ActivityThread.java:3997) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:491) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) at dalvik.system.NativeStart.main(Native Method) 

I'm not quite sure where this error came from, and I don't know too much about the FragmentManager. Do I need to hide transactions or something like that? Or viewPager in ViewPager is not possible? And yes, I know there are other ways to do this, but I want the snap and scroll to be free. I would also like to understand how this works.

+46
android android-3.0-honeycomb
Sep 07 '11 at 18:36
source share
3 answers

I recently ran into the same problem, and after a little investigation, I was surprised to find that you simply cannot insert one piece into another. Here you execute one fragment transaction in another. This is simply not allowed.

The new version of the v4 support library (or Android 4.2, of course) solves this problem. See answer below.

Update getChildFragmentManager () to solve the above problem.

+27
Sep 20 '11 at 7:20
source share

The new version of Support Library v4 (or Android 4.2, of course) very easily solves this problem. To do this, simply create your FragmentPagerAdapter constructor as follows:

 public CustomFragmentPagerAdapter(android.support.v4.app.Fragment fragment) { super(fragment.getChildFragmentManager()); // write your code here } 

This work because the new version of Android favors the use of nested fragments

+100
Dec 24 '12 at 6:45
source share

Refer to this. Show snippet in snippet

This can be done, but it was done through Asysnc, since you must complete the first fragment transaction first. You may have fragments inside fragments. I know, because I have several projects that do this.

+6
Jun 26 2018-12-12T00:
source share



All Articles