android - 导航图不会在深度链接中使用默认参数

标签 android android-architecture-navigation

我在导航图中有一个带有两个参数( 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/

相关文章:

android - 导航架构 : How to manage proper navigation without using clearTask as it is deprecated

android - Retrofit 2、GSON 和自定义解串器

android - Android通过NavDirections争论(Safe-Args)将ViewModel发送到Fragment

android - 如何将 View 模型范围限定为父 fragment ?

android - 新的Android WebView和CrossWalk WebView性能一样吗

android - Jetpack 导航到一个共同的目的地

android - 使用分页库和导航架构组件将 recyclerview 的状态保持在 fragment 中

android - 为什么 Android 的 HttpUrlConnection 不支持 HTTP/2?

android - 如何在 Android map 上将相机移动到最大缩放级别

android - 没有找到类 "com.google.firebase.provider.FirebaseInitProvider"?