Android navigation unknown to th

2020-06-16  本文已影响0人  svvvvvvvL

最近使用Jetpack的Navigation库时, 碰到了这个报错. 说是当前跳转的destination不对. 查了一段时间后才发现一种比较容易出现这个bug的情况.
那就是, 如果从跳转的目的地是<dialog这个标签的话.也就是类似下图这样

image.png
他在跳转的时候,会调用fragmentManager来添加一个DialogFragment, 问题就处在这里.

因为dialog从创建到显示, 有一个动画时间, 在这段时间之内, 虽然目标dialogFragment还没显示在屏幕上, 但是Navigation已经把这个目标destination添加到了任务栈当中了, 也把当前navController的当前destination设置为了这个DialogFragment. 如果在这个时候再点击一次刚才的弹出dialog的按钮. 会再次尝试打开dialog,但是当前的destination已经是DialogFragment了. 而不是点按钮的那个Fragment. 所以会造成action不匹配, 引发错误.

解决的办法就是在DialogFragment显示出来之前, 不可以再次调用这个navigate跳转方法

上一篇下一篇

猜你喜欢

热点阅读