PopBackStack mais garder le premier fragment dans android
Je suis en train de travailler sur fragment de transaction, et la backstack est comme ceci:
fragA => fragB => fragC => fragD
Je voudrais revenir à fragA après retour fromn la fragD
fragD => onBackPress => fragA
Donc, j'ai essayé un code comme:
getChildFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
mais il est clair que tous les backstack , comment puis-je garder le premier fragment de la backstack? Merci beaucoup
Cette réponse ici:- stackoverflow.com/a/28115271/9969285 est la plus simple et la meilleure solution! Cela a fonctionné dans mon cas, avec de multiples fragments (peut être démarré dans n'importe quel ordre après le premier fragment), et à l'arrière enfoncée, vous pouvez toujours revenir à créé en premier fragment. Point très important à retenir est de ne pas ajouter à la backstack lors de la création de la première fragment, mais ajouter à la backstack lors de l'ajout de tous les autres fragments.
OriginalL'auteur user782104 | 2015-02-06
Vous devez vous connecter pour publier un commentaire.
E. g. vous pouvez effectuer les opérations suivantes:
l'activité, et ne réagissent pas sur le bouton de retour.
P. S. Il y a d'autres façons de faire ce que vous voulez. Ça dépend...
OriginalL'auteur Leonidos
Parce que la "pile de retour" a une pile de type de comportement...last-in, first-out...le dernier fragment que vous avez ajouté à la pile de retour sera sauté hors de la pile de retour en premier. Vous aurez besoin de mettre en œuvre le comportement requis manuelle par le biais de votre propre. Ce n'est pas que dur à l'aide de la
FragmentManager
les méthodes de la classe.Si vous "tag" vos fragments que vous les ajoutez à la transaction...
vous pouvez ensuite déterminer quel fragment de montrer quand l'arrière est enfoncé...
Comment vous déterminer quel fragment de montrer que c'est entièrement à vous. Vous pouvez garder une trace de l'actuel visible fragment ou vous pouvez utiliser le
isHidden
méthode de laFragment
classe...BTW, je parle de la maternelle fragments ici, pas de soutien de la bibliothèque du fragment.OriginalL'auteur Leo
La backstack contient des documents concernant les opérations, et non pas des fragments de lui-même.
Donc, vous ne devez pas ajouter de la première opération de l'enregistrement (null -> fragA) à backstack.
Et toutes les autres transactions de l'enregistrement doit être ajouté à la backstack.
Dans ce cas, alors vous préforme
popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
android supprimé tous les fragments sauf fragA, car il n'y a pas tous les dossiers sur la façon de fragA a été ajouté.OriginalL'auteur inverse12
Il y a quelques jours j'ai commencer à apprendre sur les fragments dans Android. Et j'ai fait face à ce problème. Ici, je montre ma solution et comment je vais résoudre ce problème. S'il vous plaît, corrigez si mon code n'est pas bon. Ce que nous avons en ce moment? Acivity, de nombreux fragments et leur backstack. Nous voulons ouvrir chaque fragment de Tiroir menu et désactivez toutes les autres fragments de la backstack. Mais, nous devons tenir une seule à la Maison fragment. Lorsque nous restons à la Maison fragment d'utilisateur et appuyez sur la touche Retour de l'app est goeing de clôture.
Activity.class
Et cliquez sur le tiroir de l'élément de menu
OriginalL'auteur Trancer
J'ai fait de la manière suivante. Effacer tous les fragments puis ajouter de la première maison fragment
OriginalL'auteur Rajesh Nasit
1) Ajouter Premier Fragment à l'aide de code ci-dessous
2) Ajouter un Deuxième Fragment De la Première fragment à l'aide de code ci-dessous
3) Ajout d'un Troisième Fragment De la Deuxième fragment à l'aide de code ci-dessous
4) Ajouter de Suite Fragment De la Troisième fragment à l'aide de code ci-dessous
5) onBackPressed() veuillez écrire le code ci-dessous
OriginalL'auteur