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
相关产品推荐
相关产品推荐

