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?
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 onDestroy
FragmentA 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
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 onPause
et onStop
sont appelés), mais la vue est détruite (et onDestroyView
est appelée). La prochaine fois que vous revenez à ce fragment, la hiérarchie des vues est recréée (votre onCreateView
est appelé). Vous devez donc redéfinir l'URL de votre image sur la vue d'image.