如何解决NavController currentDestination是否为null?
我正在使用NavController来管理应用导航:
findNavController().navigate(action)
我在Crashlytics中遇到了一些崩溃:我发现这是因为:
MyFragment {
...
myLiveData.observer(viewLifecycleOwner,Observer) {
findNavController().navigate(myAction) // currentDestination is null ...
})
...
navController.currentDestination?是可选的,如果为null,则应用程序崩溃并发生未处理的异常。
由于currentDestination被声明为可选项,所以我想肯定有一些合法的原因,为什么它可以为null,我不知道。预先了解任何指针。
解决方法
目标代表NavHost
托管的NavGraph中的节点。 NavController
仅管理流程。当NavHost
未显示任何目的地时,出现的情况很少,例如:
- 在设置
NavGraph
之前(因为目标位置代表图形中的位置) - 当您使用交易(在图表范围之外)手动为
NavHost
中的东西充气时
如果一个应用程序中有多个图形(例如nested graphs,但也可以是独立的),则可能有一个NavController
给出了主图形目标,第二个返回了空值,等等。
感谢Stachu,与片段viewLifecycle有任何关系吗?
就我而言,导航是通过liveData观察器触发的,即
MyFragment {
...
myLiveData.observer(viewLifecyucleOwner,Observer) {
findNavController().navigate(myAction) // currentDestination is null ...
}
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。