如果我在 ImageView 中的相机图像在使用导航组件转到另一个片段后消失,这是否正常?
is it normal if my image from camera in ImageView disappear after segue to another fragment using navigation component?
-
android
-
android-navigation
-
android-architecture-components
-
android-jetpack
-
android-architecture-navigation
我尝试使用相机捕获图像,然后图像结果将像下面的代码一样放置在我的 ImageView 中的 fragmentA 中,因此它 NOT 从中获取图像路径服务器然后使用 Glide Library 将它放在 ImageView 中,我从相机拍摄图像。
val image_uri = Uri.fromFile(photoFile)
photoImageView.setImageURI(image_uri)
然后,我使用此代码移动到下一个目的地(从 fragmentA 到 fragmentB)
val toFragmentB = AFragmentDirections.actionGlobalBFragment()
findNavController().navigate(toFragmentB)
但是当我回到 FragmentA 时,ImageView 中的图像消失了。我相信当我转到 FragmentB 时,FragmentA 中的 onDestroy
不会被调用。这正常吗?
所以要解决这个问题,让图像持久化,首先我必须 'store' ViewModel 中的图像?我说得对吗?
查看 fragment lifecycle, especially view and fragment lifecycle flow。当您导航出片段时,它会切换到 CREATED
状态(因此会调用 onPause
和 onStop
),但是 视图会被销毁 (并且onDestroyView
被调用)。下次您导航回此片段时,将重新创建视图层次结构(调用您的 onCreateView
)。所以你应该再次设置你的图像 url 到图像视图。
android
android-navigation
android-architecture-components
android-jetpack
android-architecture-navigation
我尝试使用相机捕获图像,然后图像结果将像下面的代码一样放置在我的 ImageView 中的 fragmentA 中,因此它 NOT 从中获取图像路径服务器然后使用 Glide Library 将它放在 ImageView 中,我从相机拍摄图像。
val image_uri = Uri.fromFile(photoFile)
photoImageView.setImageURI(image_uri)
然后,我使用此代码移动到下一个目的地(从 fragmentA 到 fragmentB)
val toFragmentB = AFragmentDirections.actionGlobalBFragment()
findNavController().navigate(toFragmentB)
但是当我回到 FragmentA 时,ImageView 中的图像消失了。我相信当我转到 FragmentB 时,FragmentA 中的 onDestroy
不会被调用。这正常吗?
所以要解决这个问题,让图像持久化,首先我必须 'store' ViewModel 中的图像?我说得对吗?
查看 fragment lifecycle, especially view and fragment lifecycle flow。当您导航出片段时,它会切换到 CREATED
状态(因此会调用 onPause
和 onStop
),但是 视图会被销毁 (并且onDestroyView
被调用)。下次您导航回此片段时,将重新创建视图层次结构(调用您的 onCreateView
)。所以你应该再次设置你的图像 url 到图像视图。