2016-07-20 5 views
0

Je rencontre un comportement étrange en ce qui concerne le bouton de retour et Fragments. Voici ma situation, j'ai 3 Fragments, f1, f2 et f3 . Il y a un Button au sein f1 qui soulève f2:Le bouton Précédent affiche un fragment incorrect

getSupportFragmentManager() 
    .beginTransaction() 
    .addToBackStack("f1") 
    .replace(R.id.fragHook, f2, 
    TAG).commit(); 

Cette opération fonctionne parfaitement. Je peux frapper le va-et-vient entre les 2 fragments que je viens de trouver. Dans f2, j'ai un RecyclerView que l'utilisateur peut sélectionner une cellule. Lorsque l'utilisateur sélectionne une cellule, je soulève f3 mais je ne pas ajouter à la f2 backstack:

getSupportFragmentManager().beginTransaction() 
    .replace(R.id.fragHook, f3) 
    .commit(); 

Le Fragmentf3 est affiché correctement. Et sur la première fois avec ce processus, je clique sur le bouton de retour et f1 s'affiche correctement à nouveau. Le problème vient maintenant si je répète ces mêmes étapes. Le Button dans f1 est cliqué, ce qui affiche f2 avec le RecyclerView. Une cellule est ensuite sélectionnée pour afficher f3 une seconde fois. Maintenant, quand je clique sur le bouton de retour, le fragment f2 apparaît. J'ai vérifié et onCreateView est appelé à la fois f1 et f2. Qu'est-ce qui pourrait causer l'apparition du f2Fragment?

Répondre

0

Vous pouvez gérer le bouton arrière et vérifier les fragments se concentrent et faire le bon débit manuellement

0

Oui il pourrait être fait en ajoutant tout le fragment à backstack.

Lorsque BackButton presse et CurrentFragment est f3 puis écrire

super.onbackPressed() deux fois d'autre fois.