I have a ViewPager within a ViewPager and I am getting 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 am not really sure where this error comes from and I don't know too much about the FragmentManager. Do I need to flush the transactions or something like that? Or is a viewPager within a ViewPager impossible? And yes I know there are other ways to do this but I want the snappness and the scrolling for free. Also I would like to understand how it actually works.
New version of Support Library v4 (or Android 4.2, ofcourse) resolve this problem much simply. For do this, simply do constructor of your custom FragmentPagerAdapter like this:
public CustomFragmentPagerAdapter(android.support.v4.app.Fragment fragment)
{
super(fragment.getChildFragmentManager());
// write your code here
}
This work because new Android version approve using nested Fragments