Czy to normalne, że mój obraz z kamery w ImageView znika po przejściu do innego fragmentu przy użyciu komponentu nawigacji?

Nov 29 2020

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 onDestroyFragmentA 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

esentsov Dec 01 2020 at 03:14

Zapoznaj się z cyklem życia fragmentu , zwłaszcza widokiem i przepływem cyklu życia fragmentu . Kiedy wychodzisz z fragmentu, przełącza się on do CREATEDstanu (tak onPausei onStopsą nazywane), ale widok jest niszczony (i onDestroyViewjest wywoływany). Następnym razem, gdy będziesz wracać do tego fragmentu, hierarchia widoków zostanie odtworzona ( onCreateViewzostaniesz wywołany). Dlatego należy ponownie ustawić adres URL obrazu na widok obrazu.