Ich habe eine Aktivität, die zwei Fragmente hostet. Die Aktivität zeigt zunächst einen Lader an, während ein Objekt geladen wird. Das geladene Objekt wird dann über newInstance-Methoden als Argumente an beide Fragmente übergeben, und diese Fragmente werden angehängt.
final FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.container1, Fragment1.newInstance(loadedObject));
trans.replace(R.id.container2, Fragment2.newInstance(loadedObject));
trans.commit();
Das zweite Fragment enthält einen android.support.v4.view.ViewPager und Registerkarten. onResume initialisieren wir wie folgt
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(adapter.getCount()); //the count is always < 4
tabLayout.setupWithViewPager(viewPager);
Das Problem ist Android wirft dann
java.lang.IllegalStateException: FragmentManager führt bereits Transaktionen aus
Mit dieser Stapelverfolgung: (Ich habe android.supportdie Paketnamen nur der Kürze halber herausgenommen)
v4.app.FragmentManagerImpl.execSingleAction (FragmentManager.java:1620) unter v4.app.BackStackRecord.commitNowAllowingStateLoss (BackStackRecord.java:637) unter v4.app.FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.fin .populate (ViewPager.java:1235) unter v4.view.ViewPager.populate (ViewPager.java:1083) unter v4.view.ViewPager.setOffscreenPageLimit (ViewPager.java:847)
Die Daten zeigen, ob setOffscreenPageLimit(...);entfernt wurde. Gibt es eine andere Möglichkeit, dieses Problem zu vermeiden?
Wann im Lebenszyklus ist die Fragmenttransaktion abgeschlossen, sodass ich warten kann, bis mein Pager eingerichtet ist?
ViewPagereinNullPointerExceptionInneresonCreateViewdes Fragments im Pager zu einemIllegalStateException : FragmentManager is already executing transactions... für den Fall, dass jemand vorbeikommt und es wissen muss