首页 > 解决方案 > 导航图不会在深度链接中使用默认参数

问题描述

我在导航图中有一个带有两个参数(ids: List<Int>?name: String?)的片段-它们都设置了默认值(都设置为@null)。

我已经从该模式创建了一个指向该片段的深层链接,mysite.com/{name}但在升级到导航版本 2.4.0-alpha08 后,我在运行我的应用程序时收到此错误:

Caused by: java.lang.IllegalArgumentException: Deep link mysite.com/{name} can't be used to open destination Destination(com.mysite:id/myFragment) class=com.mysite.MyFragment.
    Following required arguments are missing: [ids]

由于膨胀我的 MainActivity.xml 时引发异常,因此在验证深层链接时似乎ids忽略了默认值。

这在 2.4.0-alpha06 版本中没有发生。

这是这个版本的导航组件中的一个错误(如果是,我会提出一个错误),或者这只是该组件中更好的验证揭示了我的代码中的一个错误 - 如果是这样,修复方法是什么?

标签: androidandroid-architecture-navigation

解决方案


可怕的是,这是我正在使用的黑客。

如果 URL 参数的值具有默认设置,则 URL 参数是可选的,因此导航图中的深层链接现在如下所示:

mysite.com/{name}?this_wont_ever_really_happen={ids}

与 url 匹配,mysite.com/{name}因为ids具有默认值 (of @null)


推荐阅读