【发布时间】:2022-09-28 09:00:46
【问题描述】:
问题:
底栏有 4 个目的地:ScreenA、Screen、ScreenS 和 ScreenS。
在屏幕上按下按钮(不是底部栏项目)时,我想使用参数进入屏幕。
代码:
导航图
AnimatedNavHost(navController = navController, startDestination = \"screen_a\") {
composable(\"screen_a\") {
ScreenA(navToScreenB = {
navController.navigate(\"screen_b?param=1\") {
})
}
navigation(
route = \"screen_b\",
startDestination = \"screen_b?param={param}\",
) {
composable(
route = \"screen_b?param={param}\",
arguments = listOf(navArgument(\"param\") { type = NavType.IntType })
) { backStackEntry ->
val param = backStackEntry.arguments?.getBoolean(\"param\") ?: 0
ScreenB(param = param)
}
composable(route = \"screen_b/details\") {
ScreenB_details(...)
}
}
}
底栏
fun BottomNavigation(navController: NavController, selectedNavigation: Screen) {
val items = listOf(...)
BottomNavigation(
backgroundColor = MaterialTheme.colors.primary
) {
items.forEach { item -> BottomNavigationItem(
onClick = {
navController.navigate(item.screen.route) {
navController.graph.startDestinationRoute?.let { route ->
popUpTo(route) { saveState = true }
}
launchSingleTop = true
restoreState = true
}
}
)
}
}
}
到目前为止,单击 ScreenA 上的按钮将我导航到 ScreenB,但参数值始终为 0,因为我永远不会传递在 navToScreenB lambda 中传递的 arg。
我正在使用 compose_version = \'1.2.0-alpha04\' 和 \"androidx.navigation:navigation-compose:2.5.0-alpha03\"
标签: android android-jetpack-compose jetpack-compose-navigation