我最近转换到了Android Navigation,但是在代码的不同部分遇到了相当多的情况,出现了以下问题:
Fatal Exception: java.lang.IllegalArgumentException
navigation destination com.xxx.yyy:id/action_aFragment_to_bFragment is unknown to this NavController
在每种情况下,代码都是简单的函数调用,例如:
findNavController(this, R.id.navigation_host_fragment).navigate(R.id.action_aFragment_to_bFragment)
通常是响应按钮按下的操作。
目前不清楚为什么会出现这个错误。我目前怀疑的是在某些设备上onClickListener被调用了两次,导致导航被第二次调用(因此它在那时处于错误的状态)。这种怀疑的原因是它似乎最常发生在导航之前有“长时间”运行的操作的情况下。但我自己的设备上无法重现这个问题。
如何避免这个问题(或者说,这个问题的实际根本原因是什么)?
我不想使用全局操作;我担心会给后台堆栈带来更多意外的状态。而且我真的不想每次进行导航调用时都尝试测试当前状态。
currentDestionation.id
也没有匹配到任何R.id
吗?对我来说,它们在完全不同的范围内:2131230790
和1000066
。 - riezebosch