You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Navigation 2.4.0-alpha08后deeplink不识别参数默认值问题

问题根因

这是Navigation 2.4.0-alpha08版本的官方bug,该版本对deeplink参数校验逻辑做了迭代:

  • 新增了导航图初始化阶段的deeplink预校验逻辑,要求每个deeplink必须覆盖目标目的地的所有必填参数,避免运行时跳转才暴露参数缺失问题
  • 但该版本的校验逻辑存在疏漏,错误将*可空类型且默认值设为@null*的参数识别为必填参数,忽略了配置的默认值,因此触发报错
  • 2.4.0-alpha06版本没有这套预校验逻辑,因此不会出现该异常
修复方案

在官方发布修复版本前,可任选以下一种方案临时规避:

  • 方案1:将Navigation组件版本回退到2.4.0-alpha06,规避新增的校验逻辑
  • 方案2:在deeplink规则中补充ids参数的占位,让校验逻辑识别到该参数已被覆盖,无需修改原有跳转逻辑:
    <deepLink app:uri="mysite.com/{name}?ids={ids}" />
    
    由于你已经给ids配置了默认值@null,实际跳转时如果url没有携带ids参数,组件会自动填充默认值,不会影响原有业务逻辑。
  • 方案3:在ids参数的配置中显式声明app:nullable="true",强制让校验逻辑识别该参数为可选参数:
    <argument
        android:name="ids"
        app:argType="java.util.List<java.lang.Integer>"
        app:nullable="true"
        android:defaultValue="@null" />
    

待官方后续修复版本发布后,升级到对应版本即可移除上述临时适配代码。

内容的提问来源于stack exchange,提问作者deanWombourne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:27:02