android - 导航图不会在深度链接中使用默认参数
问题描述
我在导航图中有一个带有两个参数(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 版本中没有发生。
这是这个版本的导航组件中的一个错误(如果是,我会提出一个错误),或者这只是该组件中更好的验证揭示了我的代码中的一个错误 - 如果是这样,修复方法是什么?
解决方案
可怕的是,这是我正在使用的黑客。
如果 URL 参数的值具有默认设置,则 URL 参数是可选的,因此导航图中的深层链接现在如下所示:
mysite.com/{name}?this_wont_ever_really_happen={ids}
与 url 匹配,mysite.com/{name}
因为ids
具有默认值 (of @null
)
推荐阅读
- javascript - 在 Iframe 中加载 XSLTProcessor::transformToDocument() 的输出时未执行 Javascript
- javascript - 为什么 emscripten 似乎此代码存在内存泄漏
- s4sdk - DestinationAccessException 在 Cloud Foundry 环境中使用 S4 SDK 执行 ODATA V2 调用时出错
- makefile - make - 仅在需要时创建中间文件
- docker - Kafka Producer 中的代理列表参数错误
- xamarin - Action.Picker returns invalid/wrong Uri (How to get path or byte[] from multiple picked gallery img)
- javascript - 使用 Javascript 动态创建行,然后发送到 Flask。没有信息被传输
- php - codeigniter中的ftp连接问题
- reactjs - Eslint airbnb 和 prettier config 删除文本中点后的所有空格
- c# - 处理 Web api 的会话