该错误通常是由于导航目的地的ID与NavDeepLinkRequest中的ID不匹配所致。为了解决这个问题,请确保在创建导航目的地和创建NavDeepLinkRequest时使用的ID是相同的。
示例代码:
NavHost( navController = navController, startDestination = Screen.Home.route ) { composable(Screen.Home.route) { HomeScreen() } composable(Screen.Detail.route) { DetailScreen() } }
sealed class Screen(val route: String) { object Home : Screen("home") object Detail : Screen("detail/{id}") { fun createRoute(id: Int): String { return "detail/$id" }
// app link
fun createAppLink(id: Int): Uri {
return Uri.parse("example://detail/$id")
}
// deep link
fun createDeepLink(id: Int): NavDeepLinkRequest {
return NavDeepLinkRequest.Builder
.fromUri("example://detail/$id")
.build()
}
}
}
在此示例代码中,通过使用创建Screen.Detail对象时定义的带参数的路由,即“detail/{id}”,可以为Screen.Detail对象创建应用链接和深链接。如果在创建NavDeepLinkRequest时使用的ID与导航图中的ID不匹配,则会出现上述错误。要解决这个问题,只需确保在创建NavDeepLinkRequest时使用与导航目的地的ID相同的ID。