é normal se minha imagem da câmera no ImageView desaparecer após a transição para outro fragmento usando o componente de navegação?

Nov 29 2020

Eu tento capturar uma imagem usando a câmera, então o resultado da imagem será colocado no meu ImageView em um fragmento A como o código abaixo, para que NÃO busque um caminho de imagem do servidor e coloque-o no ImageView usando a Biblioteca Glide, eu tiro uma imagem de Câmera.

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

e então, eu mudo para o próximo destino usando este código (do fragmento A para o fragmento B)

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

mas quando eu volto para FragmentA, a imagem em ImageView desapareceu. Eu acredito que onDestroyFragmentA não é chamado quando eu segue para FragmentB. isso é normal ?

então para resolver esse problema, para fazer a imagem persistir, primeiro tenho que 'armazenar' a imagem no ViewModel? Estou certo?

Respostas

esentsov Dec 01 2020 at 03:14

Verifique o ciclo de vida do fragmento , especialmente o fluxo de ciclo de vida de visualização e fragmento . Quando você está navegando para fora de um fragmento, ele muda para o CREATEDestado (assim onPausee onStopsão chamados), mas a visualização é destruída (e onDestroyViewé chamada). Na próxima vez que você navegar de volta para este fragmento, a hierarquia de visualização será recriada (seu onCreateViewé chamado). Portanto, você deve definir o url da imagem para a visualização da imagem novamente.