13

L'ultima revisione della libreria di supporto da questa mattina (Android Support Package v4 revision 11) si suppone per sostenere frammenti nidificate.Frammenti nidificati che utilizzano libreria di supporto v4 revisione 11

Nel mio progetto ho un frammento che contiene un ViewPager e questo ViewPager contiene diversi frammenti.

Sto chiamando getSupportFragmentManager() anziché getFragmentManager per utilizzare lo FragmentManager della libreria di supporto.

Il problema è che io sono ancora sperimentando crash come:

java.lang.IllegalStateException: Recursive entry to executePendingTransactions 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416) 
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461) 
    at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
    at android.support.v4.view.ViewPager.populate(ViewPager.java:1012) 
    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:523) 
    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:495) 
    at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1221) 
    at android.view.View.dispatchRestoreInstanceState(View.java:11910) 
    at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2584) 
    at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2590) 
    at android.view.View.restoreHierarchyState(View.java:11888) 
    at android.support.v4.app.Fragment.restoreViewState(Fragment.java:417) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:933) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 
    at android.os.Handler.handleCallback(Handler.java:615) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4745) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    at dalvik.system.NativeStart.main(Native Method) 

C'è qualcosa che sto facendo male? O il supporto non supporta i frammenti annidati per davvero?

mie transazioni sono così semplici come questo:

getSupportFragmentManager().beginTransaction() 
        .replace(R.id.content, new MyFragment()).commit(); 
+0

Che tipo di elemento è R.id.content? – Yahor10

+0

È un 'FrameLayout'. –

+0

Hai letto questo articolo? http://stackoverflow.com/questions/6185272/android-honeycomb-how-to-change-fragments-in-a-framelayout-without-re-creating – Yahor10

risposta

19

Provare a utilizzare getChildFragmentManager() invece di getSupportFragmentManager(). questo dovrebbe aiutare

+3

Cosa? 'getChildFragmentManager()' può essere utilizzato solo all'interno di frammenti e 'getSupportFragmentManager()' può essere utilizzato solo all'interno di FragmentActivity? Come funzionerebbe mai? –

Problemi correlati