Czy to normalne, że mój obraz z kamery w ImageView znika po przejściu do innego fragmentu przy użyciu komponentu nawigacji?
Próbuję przechwycić obraz za pomocą kamery, a następnie wynik obrazu zostanie umieszczony na moim ImageView w fragmencie podobnym do poniższego kodu, więc NIE pobiera ścieżki obrazu z serwera, a następnie umieszczam go w ImageView przy użyciu biblioteki Glide, biorę obraz z aparat fotograficzny.
val image_uri = Uri.fromFile(photoFile)
photoImageView.setImageURI(image_uri)
a następnie przechodzę do następnego miejsca docelowego za pomocą tego kodu (od fragmentu A do fragmentu B)
val toFragmentB = AFragmentDirections.actionGlobalBFragment()
findNavController().navigate(toFragmentB)
ale kiedy wrócę do FragmentA, obraz w ImageView znika. Wierzę, że onDestroy
FragmentA nie jest wywoływana, gdy przechodzę do FragmentB. czy to normalne ?
więc aby rozwiązać ten problem i utrwalić obraz, najpierw muszę „przechowywać” obraz w ViewModel? czy mam rację?
Odpowiedzi
Zapoznaj się z cyklem życia fragmentu , zwłaszcza widokiem i przepływem cyklu życia fragmentu . Kiedy wychodzisz z fragmentu, przełącza się on do CREATED
stanu (tak onPause
i onStop
są nazywane), ale widok jest niszczony (i onDestroyView
jest wywoływany). Następnym razem, gdy będziesz wracać do tego fragmentu, hierarchia widoków zostanie odtworzona ( onCreateView
zostaniesz wywołany). Dlatego należy ponownie ustawić adres URL obrazu na widok obrazu.