gpt4 book ai didi

android - 屏幕旋转后无法 popBackStack()。安卓导航组件

转载 作者:行者123 更新时间:2023-11-29 23:17:44 27 4
gpt4 key购买 nike

我正在使用 NavController:Navigation.findNavController(activity, R.id.statistic_host_fragment)。一切都很好,直到我旋转我的设备,然后我不能 navigate()popBackStack()

在日志中:FragmentNavigator:忽略 popBackStack() 调用:FragmentManager 已经保存了它的状态并且FragmentNavigator:忽略 navigate() 调用:FragmentManager 已保存其状态

当我看到 Google Sample 时,他们没有解决这个问题,一切正常。所以我不明白这是问题所在。

此外,当我使用 MVVM 时,我将 navController 保存在 viewModel 中,并在 onCreate() 之后在 viewModel 中重新初始化 Controller 。它在旋转后解决了 navigate() 问题,但我仍然不能 popBackStack()。之后我尝试使用 Navigation.setViewNavController() 但它不起作用。

val destId = currentController.currentDestination?.id

if (destId != R.id.wikiFragment && destId != R.id.statisticsFragment && destId != R.id.trackerFragment)
currentController.navigateUp()

在 HomeActivity 中:

override fun onBackPressed() {
if (vm.currentController.graph.startDestination == vm.currentController.currentDestination?.id) {
super.onBackPressed()
} else {
vm.currentController.popBackStack()
}
}

所有来源:https://github.com/SuperCatDev/OverHub/tree/feature/maps

最佳答案

通过从 ViewModel 中提取所有 NavController 并且从不保留 NavController 实例来解决问题。仅在需要访问时才使用 getter 方法。

关于android - 屏幕旋转后无法 popBackStack()。安卓导航组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55017961/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com