Alp*_*a 1 53 android android-jetpack-compose
我在我的应用程序中创建了屏幕目的地HistoryDetail。
composable(
route = "HistoryDetail/{webpage}",
arguments = listOf(
navArgument("webpage") {
type = NavType.StringType
}
),
) { entry ->
val text = entry.arguments?.getString("webpage") ?: ""
}
Run Code Online (Sandbox Code Playgroud)
当我尝试通过调用导航到该屏幕时:
navController.navigate("HistoryDetail/http://alphaone.me/")
Run Code Online (Sandbox Code Playgroud)
我收到illegalArgumentException以下消息。
java.lang.IllegalArgumentException: Navigation destination that matches request NavDeepLinkRequest{ uri=android-app://androidx.navigation/HistoryDetail/http://alphaone.me/ } cannot be found in the navigation graph NavGraph(0x0) startDestination={Destination(0x78c9ba0c) route=Home}
Run Code Online (Sandbox Code Playgroud)
编辑:
如果我打电话,它就会起作用:navController.navigate("HistoryDetail/test")。
Phi*_*hov 86
导航路线相当于 url。一般来说,你应该经过类似的地方id。
当你需要在另一个 url 中传递一个 url 时,你需要对其进行编码:
val encodedUrl = URLEncoder.encode("http://alphaone.me/", StandardCharsets.UTF_8.toString())
navController.navigate("HistoryDetail/$encodedUrl")
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要在视图端解码参数,因为导航库会为您完成此操作。
小智 5
这怎么样?
composable(
route = "HistoryDetail?webpage={webpage}",
arguments = listOf(
navArgument("webpage") {
type = NavType.StringType
}
),
) { entry ->
val text = entry.arguments?.getString("webpage") ?: ""
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10102 次 |
| 最近记录: |