Par*_*rma 6 android android-navigation android-architecture-navigation android-jetpack-compose jetpack-compose-navigation
我在 Jetpack Compose 应用程序的项目中设置了一个带有 2 个目的地的底部栏。我尝试遵循谷歌的示例。
例如,它看起来像这样:
@Composable
fun ExampleBottomBar(navController: NavHostController) {
val items = listOf(
BottomNavigationGraph.Graph1,
BottomNavigationGraph.Graph2
)
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination
BottomNavigation {
items.forEach { screen ->
BottomNavigationItem(
onClick = {
navController.navigate(screen.route) {
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
},
selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true,
icon = { Icon(imageVector = screen.icon, contentDescription = null) },
label = { Text(stringResource(screen.label)) }
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这一切工作正常,我能够在两个目的地之间导航。但是,当我从 导航Graph-1 Screen-2到时Graph-2 Screen-2,它导航没有任何问题。但是当我按底部选项卡时Graph-1,它不起作用。底部选项卡似乎不再可点击。所以我尝试了这个解决方案来导航到嵌套屏幕(不同的图表):
navigate(route) {
launchSingleTop = true
restoreState = false
popUpTo(graph.findStartDestination().id) {
saveState = true
}
}
Run Code Online (Sandbox Code Playgroud)
现在这个解决方案完美运行。现在,当我单击底部选项卡时,Graph-1它会切换并保留 的状态Graph-1 Screen-2,但是当我按下后退按钮时Graph-2 Screen-2,它会直接导航到为Graph-1 Screen-1创建另一个堆栈Graph-1 Screen-1。所以基本上我想要的是Graph-1 Screen-2保留后按或 BottomTab 单击的状态。
我做错了什么还是这是一个错误?有人可以帮我吗?提前致谢。
| 归档时间: |
|
| 查看次数: |
1637 次 |
| 最近记录: |