ナビゲーションコンポーネントを使用して別のフラグメントにセグエした後、ImageViewのカメラからの画像が消えるのは正常ですか?

Nov 29 2020

私はカメラを使って画像をキャプチャしようと、それはそれはので、その後、画像の結果は、下記のコードのようfragmentAで私のImageViewの上に配置されますしないサーバーから画像のパスを取得、その後グライドライブラリを使用してImageViewの中に置き、私がから画像を撮りますカメラ。

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

次に、このコードを使用して次の宛先に移動します(fragmentAからfragmentBへ)

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

しかし、FragmentAに戻ると、ImageViewの画像が消えます。私は信じてonDestroy、私はFragmentBにセグエときFragmentAで呼び出されていません。これは正常ですか?

したがって、この問題を解決するには、画像を永続化するために、最初に画像をViewModelに「保存」する必要がありますか?私は正しいですか?

回答

esentsov Dec 01 2020 at 03:14

フラグメントのライフサイクル、特にビューとフラグメントのライフサイクルフローを確認してください。フラグメントから移動すると、CREATED状態に切り替わります(つまりonPauseonStop呼び出されます)が、ビューは破棄されます(そしてonDestroyView呼び出されます)。次にこのフラグメントに戻ると、ビュー階層が再作成されます(onCreateViewが呼び出されます)。したがって、画像のURLを画像ビューに再度設定する必要があります。