/ / Fragments imbriqués avec l'adaptateur de pagineur fragmenté - android, android-fragments

Fragments imbriqués avec l'adaptateur de pagineur fragmenté - android, android-fragments

J'ai un problème très frustrant avec les fragments imbriqués. J'ai un scénario apparemment simple et direct:

MainActivity
ContentFrame
MainFragment
ViewPager (with FragmentStatePagerAdapter)
FragmentA
FragmentB
FragmentC
...

Remarque: Je ne détiens pas de références aux fragments de l'extérieur de l'adaptateur de pageur. J'instancie les fragments dans la méthode getItem pour l'adaptateur de pager.

Cas 1

Le problème que je rencontre est que la vueles fragments de pager ne reçoivent aucun changement d'état. Lorsque j'échange un fragment dans MainActivity, onPause et onResume sont invoqués sur le MainFragment. Cependant, onPause et onResume ne sont pas invoqués sur les fragments de pageur de vue.

Lorsque je reviens à MainFragment, onCreateViewest invoqué, créant un nouvel adaptateur ViewPager, mais comme prévu, les fragments imbriqués ne sont pas réinstanciés car ils ont été balisés et peuvent être réutilisés. Cependant, comme onPause et onResume ne sont jamais appelés, mon état est foiré.

Cas 2

De plus, les fragments de ViewPager ne semblent jamais être détruits. Si, à la place, je supprime explicitement MainFragment chaque fois que je permute vers un autre fragment externe en utilisant:

fm.beginTransaction().remove(mainFragment).commit();

puis ré-instancier MainFragment. Même ainsi, les fragments ViewPager ne semblent jamais être nettoyés. Maintenant, le MainFragment finit à la place par instancier de nouveaux fragments ViewPager et je me retrouve finalement avec de nombreux fragments ViewPager qui ne sont jamais détruits.

Le résultat final

Essentiellement, je veux juste pouvoir acquérir etlibérer des ressources dans les fragments ViewPager chaque fois que MainFragment devient actif / inactif. Cela ne peut sûrement pas être aussi difficile qu'il semble l'être en ce moment ...

Réponses:

3 pour la réponse № 1

Vérifier ce question que j'ai posée tout à l'heure et la réponse acceptée. Je suppose que ce pourrait être le même problème.