我在导航图中有一个带有两个参数( ids: List<Int>?
和 name: String?
)的 fragment - 它们都设置了默认值(都设置为 @null
)。
我已经从模式 mysite.com/{name}
创建了指向该 fragment 的深层链接但是在升级到导航版本 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 版本中没有发生。
这是此版本导航组件中的错误(如果是,我会提出错误),还是只是在该组件中进行了更好的验证,揭示了我的代码中的错误 - 如果是,修复方法是什么?
最佳答案
可怕的是,这是我正在使用的 hack。
如果 URL 参数的值具有默认设置,则它们是可选的,因此我在导航图中的深层链接现在如下所示:
mysite.com/{name}?this_wont_ever_really_happen={ids}
匹配 url mysite.com/{name}
因为 ids
有一个默认值(@null
)
关于android - 导航图不会在深度链接中使用默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69101925/