gpt4 book ai didi

android - 导航 DESTINATION_NAME 对此 NavController 未知,是否正在重新打开之前使用 navController.popBackStack() 关闭的 fragment ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:29 26 4
gpt4 key购买 nike

我在我的应用程序中使用导航组件,最近它工作正常但是在将项目更新到 AndroidX 之后我收到错误消息 navigation destination DESTINATION_NAME is unknown to this NavController < strong>仅当该目的地(我将要打开的)之前使用 navController.popBackStack() 从自身关闭时。此外,如果我从 MainActivity 中关闭 DESTINATION fragment ,也不会出现错误,但仅发生错误 fragment 是使用 popBackStack 从自身中关闭的。像下面一样

DestinationFragment

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
})

主 Activity

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
}
}

我也检查了相关问题但没有帮助Similar Question .

注意:我使用的是最新版本的导航库(alpha05)

最佳答案

之前的值可能仍然存在于 View 模型中并立即触发。我建议使用一个接口(interface)来处理您的后退按钮委托(delegate),而不是观察者。这应该可以解决使用问题。

发生的事情是,您在返回堆栈中弹出的位置太高,以至于您不再拥有 Activity 图表。发生这种情况是因为您的观察者比应有的更频繁地被触发。要看到这一点,我建议在崩溃之前调试该行并检查图表。它很可能为空。

关于android - 导航 DESTINATION_NAME 对此 NavController 未知,是否正在重新打开之前使用 navController.popBackStack() 关闭的 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51887968/

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