此 NavController 不知道导航 DESTINATION_NAME,是否要重新打开之前使用 navController.popBackStack() 关闭的片段?

2024-03-15

我在我的应用程序中使用导航组件,最近它工作正常,但在将项目更新为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(使用前将#替换为@)

此 NavController 不知道导航 DESTINATION_NAME,是否要重新打开之前使用 navController.popBackStack() 关闭的片段? 的相关文章

随机推荐