2012-02-16 3 views
2

J'ai une application, qui a l'architecture suivante:Est-ce que différents Fragments Android ont un backstack commun?

Il a FragmentActivity qui contient un Fragment. Ce fragment contient TabHost avec 4 onglets dedans. Chaque onglet a sa propre disposition. Et je crée de nouveaux fragments et les lie à ces ayouts. Eh bien, j'ai enfin 4 fragments. Chaque fragment peut commencer de nouveaux fragments car il est enfant. Je pensais que chaque fragment a son propre dos. Mais il semble que ce ne soit pas le cas. On dirait que c'est un backstack commun pour ces fragments. Je veux dire que si je choisis le premier onglet et que je lance un nouveau fragment enfant, je sélectionne le deuxième onglet, je commence un nouveau fragment enfant, puis je reviens au premier onglet et j'appuie sur le bouton retour pour détruire le fragment enfant. à partir de l'onglet SECOND mais pas du premier onglet. Si j'appuie sur le bouton de retour une fois de plus, alors il détruit avec succès le fragment d'enfant du premier tab.

Eh bien, je l'ai trouvé une sorte de même problème ici Separate Back Stack for each tab in Android using Fragments

Quelqu'un propose d'envelopper chacun de ces 4 fragments FragmentActivity, mais je crains que cela prendra trop de temps pour factoriser tout mon code. Parce que le projet se termine bientôt, et je n'ai pas beaucoup de temps pour un refactoring aussi important.

Peut-être que quelqu'un pourrait offrir une meilleure solution à mon problème?

Dmitriy

Répondre

2

Il a FragmentActivity qui contient un fragment. Ce fragment contient TabHost avec 4 onglets dedans. Chaque onglet a sa propre disposition. Et je crée de nouveaux fragments et les lie à ces ayouts. Eh bien, j'ai enfin 4 fragments.

La structure aurait dû être comme ceci:

Activity hébergement d'un TabHost contenant 4 FragmentActivities (un pour chaque onglet). Chaque FragmentActivity aura son propre backstack. Cela devrait vous donner le résultat que vous voulez.

Si vous n'avez pas envisagé d'essayer FragmentTabsPager Vous pourriez vouloir jeter un coup d'oeil et voir si cela répond à vos besoins. Cela aura aussi une meilleure expérience utilisateur.

Le refactoring ne devrait pas prendre beaucoup de temps si vous essayez de déplacer des choses de Fragments à Activities et Vice-Versa.

Bonne chance.

+0

Comment le TabHost peut-il héberger 4 FragmentActivities? Dans l'exemple que vous avez montré, chaque Tab FragmentActivity a une classe interne Fragment, et c'est celle insérée dans TabHost. Je ne pense pas qu'ils utilisent des backstacks différents, mais plutôt le backstack principal. Est-ce correct? – ffleandro

Questions connexes