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.support
die 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?
ViewPager
einNullPointerException
InneresonCreateView
des Fragments im Pager zu einemIllegalStateException : FragmentManager is already executing transactions
... für den Fall, dass jemand vorbeikommt und es wissen muss