我正在我当前正在处理的项目中使用导航组件。问题是,当我同时单击两个项目时,会导致findNavController.navigate()
被调用两次。因此它抛出了IllegalArgumentException: navigation destination is unknown to this NavController
。我认为它去了目的地,然后尝试在没有目标目的地的那个目的地再次触发。目的地接待...
是否可以检查当前片段是否已指定目的地?
现在,我已经用下面的代码解决了问题,但看起来不正确。
fun NavController.navigateSafe(direction: NavDirections) {
try {
navigate(direction)
} catch (exception: IllegalArgumentException) {
Log.e("NavigationExtensions", exception.message.orEmpty())
}
}
更新
感谢link,@ Md.Asaduzzaman的分享对我有所帮助。 解决方法是;
fun NavController.navigateSafe(direction: NavDirections) {
currentDestination?.getAction(direction.actionId)?.let { navigate(direction) }
}