我在我的应用程序中使用导航组件,最近它工作正常,但在将项目更新为AndroidX
我收到错误navigation destination DESTINATION_NAME is unknown to this NavController
仅当该目的地(我要打开的)之前使用navController.popBackStack()
。另外,如果我关闭 DESTINATION 片段,则不会出现错误MainActivity
,但仅发生错误片段使用自身关闭popBackStack
。像下面这样
目标片段
viewModelOfActivity.handleBackButton.observe(this, Observer {
Navigation.findNavController(requireActivity(), R.id.main_nav_host).popBackStack()
//CALLING popBackStack() HERE CAUSING PROBLEM WHEN REOPNING THIS DESTINATION(or frg ) AGIAN
})
主要活动
override fun onBackPressed() {
if (myViewModel.isDefaultBehaviour.value == true) {
super.onBackPressed()
} else{
myViewModel.handleBackButton.value=true
//NO ERROR IF HANDLE BACK BUTTON HERE ie->findNavController(R.id.main_nav_host).popBackStack()
//INSTEAD OF myViewModel.handleBackButton
}
}
我也检查了相关问题但没有帮助类似问题 https://stackoverflow.com/questions/51060762/java-lang-illegalargumentexception-navigation-destination-xxx-is-unknown-to-thi.
注意:我使用的是最新版本的导航库(alpha05)
先前的值可能仍然存在于视图模型中并且立即触发。我建议使用接口来处理后退按钮委托,而不是观察者。这应该可以解决用法。
发生的情况是您在后台堆栈中弹出得太远,以至于不再有活动图表。发生这种情况是因为您的观察者被触发的频率比应有的要高。要看到这一点,我建议调试该行并在崩溃之前检查图表。它很可能为空。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)