J'ai une activité d'hébergement de deux fragments. L'activité commence en montrant un chargeur pendant qu'il se charge d'un objet. Le chargé de l'objet est ensuite transmis à la fois des fragments comme arguments par newInstance méthodes et ces fragments sont attachés.
final FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.container1, Fragment1.newInstance(loadedObject));
trans.replace(R.id.container2, Fragment2.newInstance(loadedObject));
trans.commit();
Le deuxième fragment contient un android.de soutien.v4.vue.ViewPager et les onglets. onResume nous l'initialiser comme suit
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(adapter.getCount()); //the count is always < 4
tabLayout.setupWithViewPager(viewPager);
Le problème est android puis la jette
java.lang.IllegalStateException: FragmentManager est déjà en cours d'exécution les transactions
Avec cette trace de la pile: (j'ai repris android.support
du paquet de noms juste pour des raisons de concision)
v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1620) au v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:637) au v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) au v4.vue.ViewPager.remplir(ViewPager.java:1235) au v4.vue.ViewPager.remplir(ViewPager.java:1083) au v4.vue.ViewPager.setOffscreenPageLimit(ViewPager.java:847)
Les données montrent si setOffscreenPageLimit(...);
est supprimé. Est-il une autre façon d'éviter ce problème?
Quand dans le cycle de vie est le fragment de la transaction complète, de sorte que je peux attendre pour l'installation de mon téléavertisseur?