0

我正在尝试将底部导航(即选项卡)与 Android Jetpack Compose 和Navigation Compose库一起使用。我设置了多个后退堆栈,以便在您在它们之间切换时保留每个选项卡的状态。但是,如果我通过点击其中一个选项卡来更改选项卡,Android 后退按钮不会返回到上一个选项卡。相反,它在该选项卡中导航。如何设置它以返回上一个选项卡?

示例场景(我想改变最后一步的行为)。

  1. 我有两个选项卡,A 和 B。
  2. 从屏幕 A1 上的 A 选项卡开始。
  3. 在该选项卡中推送一个名为 A2 的新屏幕。
  4. 在其开始屏幕 B1 上点击 B 选项卡以移动到它。
  5. 在该选项卡 B2 中推送一个新屏幕。所以选项卡堆栈现在是:A:[A1,A2] 和 B:[B1,B2]
  6. 点击 A 选项卡。我回到了那个堆栈,在屏幕 A2 上。该选项卡中的状态被保留。
  7. 按 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
            }
        }
    )
}
4

0 回答 0