【发布时间】:2019-03-06 07:44:17
【问题描述】:
我正在使用导航控制器:Navigation.findNavController(activity, R.id.statistic_host_fragment)。一切都很好,直到我旋转我的设备,然后我不能navigate()和popBackStack()。
在日志中: FragmentNavigator:忽略 popBackStack() 调用:FragmentManager 已经保存了它的状态并且 FragmentNavigator:忽略 navigate() 调用:FragmentManager 已保存其状态
当我看到 Google 示例时,他们对这个问题没有任何反应,一切正常。所以我不明白这是问题所在。
另外,当我使用 MVVM 时,我将 navController 保存在 viewModel 中,并在 onCreate() 在 viewModel 中重新初始化控制器之后。它解决了旋转后的导航()问题,但我仍然无法弹出BackStack()。之后我尝试使用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
【问题讨论】:
-
你是如何弹回栈的,你能显示一些代码吗?
-
您可能可以编辑您的问题。不要将代码放在 cmets 中。
-
是的,这是个好主意)
标签: android android-architecture-navigation