【问题标题】:How to avoid "navigation XYZ cannot be found from the current destination"如何避免“无法从当前目的地找到导航 XYZ”
【发布时间】:2021-07-07 12:13:55
【问题描述】:

我的 Firebase 的 crashlytics 上出现了一些崩溃,但例外

Fatal Exception: java.lang.IllegalArgumentException Navigation ACTION_XYZ cannot be found from the current destination

我已经调试了这个案例并发现了问题: 我有一个从片段 A 导航到片段 B 的按钮,并且效果很好。 但是当您快速单击按钮两次时 - 首先它正确导航,然后尝试再次导航,因此出现异常。

应该如何避免这样的错误?我可以默默地从按钮的点击中捕捉到异常,但这对我来说就像是代码异味。 我也可以在第一次单击后禁用该按钮,但我想知道是否有更优雅、更简洁的方法来避免重复导航到 FragmentB?

谢谢大家的回答,干杯!

【问题讨论】:

    标签: android kotlin navigation


    【解决方案1】:

    在导航到任何屏幕之前,您可以检查我们是否有从当前屏幕到特定目的地的操作。像下面的东西。您可以使用此扩展功能安全地导航到任何目的地。

    fun NavController.navigateSafe(directions: NavDirections, navOptions: NavOptions? = null) {
        currentDestination?.getAction(directions.actionId)?.let {
            navigate(directions, navOptions)
        }
    }
    

    【讨论】:

    • 简单的解决方案,看起来不错,工作起来就像一个魅力。这正是我所需要的!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 2021-04-18
    • 2021-12-19
    • 2021-01-09
    • 1970-01-01
    • 2023-02-25
    相关资源
    最近更新 更多