如何解决使用 Android Jetpack 导航控制器销毁和重新创建 Fragment
我有一个包含三个片段的活动。它将使用导航控制器在片段之间导航。但是每次我移动到另一个片段时,前一个片段都会被破坏。
当我返回时(使用返回键或应用栏返回按钮),它会再次调用 onCreateView。
问题是,我有一个名为 fetchProducts() 的方法,它应该在片段上创建视图时运行一次。因为片段总是被销毁,所以我的 fetchProducts 总是被再次调用,我不想这样做。
顺便说一句,我正在使用 viewBinding。
这是我的一些代码:
@AndroidEntryPoint
class HomeMainFragment : Fragment(R.layout.fragment_main_home) {
private var _binding: FragmentMainHomeBinding? = null
private val binding get() = _binding!!
private val viewModel: HomeMainViewModel by viewModels()
override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
super.onViewCreated(view,savedInstanceState)
_binding = FragmentMainHomeBinding.bind(view)
setupRecyclerView()
observe()
goToCreateProductPage()
fetchProducts()
}
//...
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
如何保持片段不被破坏?特别是使用 viewBinding
解决方法
由于这个问题: Support multiple back stacks for Bottom tab navigation
您可以使用导航库版本 2.4.0-alpha04 和片段版本 1.4.0-alpha04 来支持返回堆栈。
是的,您应该考虑使用 ViewModel 来获取您获取的数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。