我正在尝试将底部导航(即选项卡)与 Android Jetpack Compose 和Navigation Compose库一起使用。我设置了多个后退堆栈,以便在您在它们之间切换时保留每个选项卡的状态。但是,如果我通过点击其中一个选项卡来更改选项卡,Android 后退按钮不会返回到上一个选项卡。相反,它在该选项卡中导航。如何设置它以返回上一个选项卡?
示例场景(我想改变最后一步的行为)。
- 我有两个选项卡,A 和 B。
- 从屏幕 A1 上的 A 选项卡开始。
- 在该选项卡中推送一个名为 A2 的新屏幕。
- 在其开始屏幕 B1 上点击 B 选项卡以移动到它。
- 在该选项卡 B2 中推送一个新屏幕。所以选项卡堆栈现在是:A:[A1,A2] 和 B:[B1,B2]
- 点击 A 选项卡。我回到了那个堆栈,在屏幕 A2 上。该选项卡中的状态被保留。
- 按 Android 后退按钮。它进入A1。相反,我希望它返回到 B 选项卡,屏幕 B2。
MyAppBottomNavItem.all.forEach { item ->
BottomNavigationItem(
icon = { Icon(item.icon, contentDescription = null) },
label = {
Text(item.name, maxLines = 1, textAlign = TextAlign.Center,
overflow = TextOverflow.Visible, softWrap = false,
fontSize = 10.sp)
},
selected = currentDestination?.hierarchy?.any { it.route == item.route } == true,
alwaysShowLabel = true,
onClick = {
nav.navigate(item.route) {
popUpTo(nav.graph.findStartDestination().id) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
}
)
}