J'utilise le package de compatibilité pour utiliser Fragments avec Android 2.2. Lorsque vous utilisez des fragments et que vous ajoutez des transitions entre eux à la backstack, j'aimerais obtenir le même comportement de onResume d'une activité, c'est-à-dire chaque fois qu'un fragment est amené au "premier plan" (visible par l'utilisateur) après sa sortie du backstack, j'aimerais qu'une sorte de rappel soit activée dans le fragment (pour effectuer certaines modifications sur une ressource d'interface utilisateur partagée, par exemple).
J'ai vu qu'il n'y a pas de rappel intégré dans le cadre du fragment. y a-t-il une bonne pratique pour y parvenir?
onCreateView
qui sera appelé pour le fragment après un pop.Réponses:
Faute d'une meilleure solution, j'ai fait fonctionner cela pour moi: supposons que j'ai 1 activité (MyActivity) et quelques fragments qui se remplacent (un seul est visible à la fois).
Dans MyActivity, ajoutez cet écouteur:
(Comme vous pouvez le voir, j'utilise le package de compatibilité).
Implémentation de getListener:
MyFragment.onFragmentResume()
sera appelé après avoir appuyé sur "Retour". quelques mises en garde cependant:FragmentTransaction.addToBackStack()
)la source
J'ai un peu changé la solution suggérée. Fonctionne mieux pour moi comme ça:
la source
getFragments()
dans SupportFragmentManager ... -1: - /Après un,
popStackBack()
vous pouvez utiliser le rappel suivant:onHiddenChanged(boolean hidden)
dans votre fragmentla source
La section suivante d'Android Developers décrit un mécanisme de communication Création de rappels d'événement vers l'activité . Pour en citer une phrase:
Edit: Le fragment a un
onStart(...)
qui est appelé lorsque le fragment est visible par l'utilisateur. De même, uneonResume(...)
fois visible et en cours d'exécution. Ceux-ci sont liés à leurs homologues d'activité. En bref: utiliseronResume()
la source
Dans mon activité onCreate ()
Utilisez cette méthode pour attraper un fragment spécifique et appeler onResume ()
la source
Un peu amélioré et intégré dans une solution de gestionnaire.
Choses à garder à l'esprit. FragmentManager n'est pas un singleton, il ne gère que des fragments dans Activity, donc dans chaque activité, il sera nouveau. De plus, cette solution jusqu'à présent ne prend pas en compte ViewPager qui appelle la méthode setUserVisibleHint () aidant à contrôler la visibilité des fragments.
N'hésitez pas à utiliser les classes suivantes pour résoudre ce problème (utilise l'injection Dagger2). Appel en activité:
FragmentBackstackStateManager.java:
FragmentBackstackChangeListenerImpl.java:
BackstackCallback.java:
la source
Si un fragment est mis en backstack, Android détruit simplement sa vue. L'instance de fragment elle-même n'est pas tuée. Une façon simple de commencer devrait être d'écouter l'événement onViewCreated, et d'y mettre la logique «onResume ()».
la source
C'est la bonne réponse que vous pouvez appeler onResume () à condition que le fragment soit attaché à l'activité. Vous pouvez également utiliser onAttach et onDetach
la source
onResume () pour le fragment fonctionne très bien ...
la source
et dernière mesure votre Frament de RootFragment pour voir l'effet
la source
Ma solution de contournement consiste à obtenir le titre actuel de la barre d'actions dans le fragment avant de le définir sur le nouveau titre. De cette façon, une fois que le fragment est sorti, je peux revenir à ce titre.
la source
J'ai utilisé enum
FragmentTags
pour définir toutes mes classes de fragments.passer
FragmentTags.TAG_FOR_FRAGMENT_A.name()
comme étiquette de fragment.et maintenant
la source