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

Android Compose导航传参触发java.lang.IllegalArgumentException求助

解决方案:Compose带参数导航路由不匹配问题

你的错误根源是导航时生成的路由格式错误,导致和导航图中定义的目的地路由不匹配。

问题所在

你在HomeScreen的navigateToItemUpdate中拼接路由时,错误地给参数值加了大括号:

navController.navigate("${TransactionDetailDestination.route}/{$it}")

这会生成类似transaction_detail/{1}的路由,但导航图里定义的routeWithArgs是transaction_detail/{transactionId}——这里的{transactionId}是占位符,实际导航时需要替换为纯数值(比如transaction_detail/1),而非带大括号的格式。

修复步骤

直接去掉参数值外面的大括号,修改导航代码为:

navigateToItemUpdate = {
    navController.navigate("${TransactionDetailDestination.route}/$it")
}

更规范的写法(推荐)

为了避免硬编码路由格式,建议直接使用预定义的routeWithArgs来替换占位符,这样更易维护:

navigateToItemUpdate = { transactionId ->
    val targetRoute = TransactionDetailDestination.routeWithArgs
        .replace("{${TransactionDetailDestination.transactionIdArg}}", "$transactionId")
    navController.navigate(targetRoute)
}

验证修改

修改后,导航时会生成正确的路由(比如transaction_detail/5),和导航图中composable节点的route = TransactionDetailDestination.routeWithArgs完全匹配,就能找到对应的目的地了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:01:18