DeK*_*kem 4 android-jetpack-navigation android-jetpack-compose
这是我的设置:
@Composable fun MyNavHost(navController: NavHostController = RememberNavController(), padding: PaddingValues) { val actions = Remember(navController) { MainActions(navController) }
NavHost(
navController = navController,
startDestination = TopLevelDestination.Home.route, modifier = Modifier.padding(padding)
) {
composable(TopLevelDestination.Home.route) {
HomeScreen(onNavigateToArticle = actions.navigateToArticle)
}
composable(
"${MyRoute.ARTICLE_ROUTE}/${MyRoute.ARTICLE_ID}",
arguments = listOf(navArgument(MyRoute.DATE_KEY) { type = NavType.LongType })
) { backStackEntry ->
ArticleScreen(
articleId = backStackEntry.arguments?.getLong(MyRoute.ARTICLE_ID)!!
)
}
}
}
/**
* Models the navigation actions in the app.
*/
class MainActions(navController: NavHostController) {
val navigateToArticle: (Long) -> Unit = { articleId: Long ->
navController.navigate("${MyRoute.ARTICLE_ROUTE}/${articleId}")
}
}
Run Code Online (Sandbox Code Playgroud)
这是来自可点击的惰性列的文章项的代码
Row(
modifier = modifier
.clickable { onNavigateToArticle(articleId) }
.padding(10.dp)
.heightIn(72.dp),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
)
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
java.lang.IllegalArgumentException: Navigation destination that matches request
NavDeepLinkRequest{ uri=android-app://androidx.navigation/article/16788348 } cannot
be found in the navigation graph NavGraph(0x0) startDestination=.
{Destination(0xa2d96fd4) route=home}
Run Code Online (Sandbox Code Playgroud)
我读了这篇文章,看起来非常简单。我真的不明白我做错了什么。我已经在 stackoverflow 上阅读了一些答案。不幸的是它们不适用于我的情况。
代替:
"${MyRoute.ARTICLE_ROUTE}/${MyRoute.ARTICLE_ID}"
Run Code Online (Sandbox Code Playgroud)
我只需要写
"${MyRoute.ARTICLE_ROUTE}/{${MyRoute.ARTICLE_ID}}"
^ ^
| |
extra brackets here
Run Code Online (Sandbox Code Playgroud)
所以多了一对括号(围绕参数)。
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |