Android Fragments: Lors de l'utilisation de masquer/afficher ou ajouter/supprimer/remplacer?
Supposons que je souhaite remplacer l'actuel fragment dans certains conteneur de vue avec l'autre. Il vaut mieux remplacer...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, newFragment, null);
ft.commit();
... ou le suivant, d'afficher et de masquer?
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.hide(oldFragment);
ft.show(newFragment);
ft.commit();
Est une façon de faire plus efficace? Ne trouve pas beaucoup d'informations sur l'utilisation de ces méthodes, ou la façon dont ils affectent le cycle de vie de ses fragments impliqué.
Merci!
- si je vais au fragment B à partir d'Un fragment, puis remonte à Un fragment comment puis-je m'assurer que le cycle de vie des événements tels que onCreateView n'est pas appel à Un fragment? ne trouvez fragment de tag de travail?
Vous devez vous connecter pour publier un commentaire.
Vous devriez considérer ce que vous prévoyez faire avec le fragment de décider du chemin à suivre. Si vous utilisez un FragmentTransaction pour masquer le fragment, alors il peut toujours être dans l'état d'exécution de son cycle de vie, mais son INTERFACE utilisateur a été détachée de la fenêtre de sorte qu'il n'est plus visible. Vous pourriez donc techniquement toujours interagir avec le fragment et de rattacher son INTERFACE utilisateur plus tard, vous devrez. Si vous remplacez le fragment, la vous sont effectivement en le tirant hors du récipient, et il va par le biais de l'ensemble de la destruction des événements dans le cycle de vie (onPause, onStop, etc), et si pour une raison quelconque vous avez besoin de ce fragment de nouveau, vous devez l'insérer dans le récipient et le laisser courir à travers l'ensemble de son initialisation de nouveau.
Si il y a une forte probabilité que vous aurez besoin de ce fragment de nouveau, puis il suffit de le cacher parce que c'est une opération moins cher pour redessiner la disposition de complètement réinitialiser elle.
hide()
etshow()
pour économiser sur les que! Merci pour cette!Log.i
à l'intérieur de OnDestroy de la méthode et de vérifier la sortie.En gros, vous avez répondu vous-même. Si vous souhaitez remplacer (si vieux fragment n'est plus nécessaire) utilisation
replace()
si vous voulez temporaire cacher alors nehide()
.J'ai utilisé cacher/Montrer la méthode dans mon activité avec 4 fragments de son résolu ma solution, mais quelque temps au hasard quand je montre mon boîte de dialogue donner de la fenêtre de mauvais jeton exception lorsque j'ai utilisé la fonction ajout et remplacement de la méthode puis mauvais jeton d'exception n'est pas de se produire, donc je pense que afficher/masquer la méthode n'est pas parfaite