双击视图(回收项目)会导致IllegalArgumentException:此NavController的导航目标未知

时间:2020-01-07 17:13:23

标签: android navigation android-jetpack android-architecture-navigation

我正在我当前正在处理的项目中使用导航组件。问题是,当我同时单击两个项目时,会导致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) }
}

0 个答案:

没有答案