ナビゲーションコンポーネントを使用して別のフラグメントにセグエした後、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状態に切り替わります(つまりonPause、onStop呼び出されます)が、ビューは破棄されます(そしてonDestroyView呼び出されます)。次にこのフラグメントに戻ると、ビュー階層が再作成されます(onCreateViewが呼び出されます)。したがって、画像のURLを画像ビューに再度設定する必要があります。