Compose导航异常:匹配NavDeepLinkRequest的目标在导航图中不存在
问题排查与修复方案
1. 参数Key不匹配
你在定义文章页的导航参数时,用了MyRoute.DATE_KEY,但路由路径、取参数时用的都是MyRoute.ARTICLE_ID,这完全不匹配,Navigation找不到对应的参数配置,导致路径匹配失败。修复代码:
composable( "${MyRoute.ARTICLE_ROUTE}/${MyRoute.ARTICLE_ID}", // 把DATE_KEY替换成ARTICLE_ID,保持参数key一致 arguments = listOf(navArgument(MyRoute.ARTICLE_ID) { type = NavType.LongType }) ) { backStackEntry -> ArticleScreen( articleId = backStackEntry.arguments?.getLong(MyRoute.ARTICLE_ID)!! ) }
2. 路由参数格式错误
必须确保MyRoute.ARTICLE_ID是带大括号的占位符格式,比如:
object MyRoute { const val ARTICLE_ROUTE = "article" // 注意这里要用{articleId}的格式,让Navigation识别为参数占位符 const val ARTICLE_ID = "{articleId}" }
如果你的ARTICLE_ID只是普通字符串(比如"articleId"没加大括号),生成的路由会是article/articleId,而不是可接收动态参数的article/{articleId},这就导致你导航时的article/16788348完全匹配不到目的地。
3. 额外检查点
确认MyNavHost里的startDestination对应的TopLevelDestination.Home.route确实是home(和报错里的Destination一致),避免导航图本身的起始页配置错误。
修复以上两点后,点击导航就能正常匹配到文章页,参数也能正确解析。
内容的提问来源于stack exchange,提问作者DeKekem
相关产品推荐
相关产品推荐

