est-il normal que mon image de la caméra dans ImageView disparaisse après avoir basculé vers un autre fragment à l'aide du composant de navigation?

Nov 29 2020

J'essaie de capturer une image à l'aide de la caméra, puis le résultat de l'image sera placé sur mon ImageView dans un fragmentA comme le code ci-dessous, donc il ne récupère PAS un chemin d'image à partir du serveur, puis le place dans ImageView à l'aide de la bibliothèque Glide, je prends une image de caméra.

val image_uri = Uri.fromFile(photoFile)
photoImageView.setImageURI(image_uri)

puis, je passe à la destination suivante en utilisant ce code (de fragmentA à fragmentB)

val toFragmentB = AFragmentDirections.actionGlobalBFragment()
findNavController().navigate(toFragmentB)

mais quand je reviens à FragmentA, l'image dans ImageView disparaît. Je crois que onDestroyFragmentA n'est pas appelé lorsque je passe à FragmentB. est-ce normal ?

donc pour résoudre ce problème, pour que l'image persiste, je dois d'abord «stocker» l'image dans ViewModel? ai-je raison?

Réponses

esentsov Dec 01 2020 at 03:14

Consultez le cycle de vie des fragments , en particulier le flux de cycle de vie des vues et des fragments . Lorsque vous naviguez hors d'un fragment, il passe à l' CREATEDétat (ainsi onPauseet onStopsont appelés), mais la vue est détruite (et onDestroyViewest appelée). La prochaine fois que vous revenez à ce fragment, la hiérarchie des vues est recréée (votre onCreateViewest appelé). Vous devez donc redéfinir l'URL de votre image sur la vue d'image.