【问题标题】:How to clear backstack when browsing Jetpack Compose?如何在浏览 Jetpack Compose 时清空 backstack?
【发布时间】:2022-11-12 07:36:40
【问题描述】:

我正在应用程序中实现注销操作。我希望当用户单击注销时,转到登录。当用户采用此路径时:登录->主页->设置(他单击注销的位置)->登录,当我按回时,应用程序进入后台并关闭,这是我想要的行为。

但是,当用户采用这条路线时: 登录 -> 主页 -> ScreenOne -> ScreenTwo -> 主页 -> ScreenOne -> 设置(单击注销的位置)-> 登录,当您按下返回时,它会返回设置,如果再次按下它会转到 ScreenOne等等 。

当我单击注销时,这就是我导航到登录的方式:

navController.navigate(NavigationItem.Login.route) {
            popUpTo(NavigationItem.Login.route) {
                inclusive = true
            }
        }

笔记:已经尝试将 Navigation.Home.route 作为 popUpTo 上的参数。

我不知道是否相关,但这就是我在 Home -> ScreenOne -> ScreenTwo -> Home -> ScreenOne 之间导航的方式:

navController.navigate(item.route) {
                    navController.graph.startDestinationRoute?.let { route ->
                        popUpTo(route = route) {
                            saveState = true
                        }
                    }

                    launchSingleTop = true
                    restoreState = true
                }

有谁知道我如何清除后台堆栈或保证,在第二种行为中,当我在注销后进入登录屏幕并按“返回”时,应用程序进入第二个计划?

【问题讨论】:

    标签: android-jetpack-compose android-jetpack-navigation


    【解决方案1】:

    要在后台关闭应用程序,您可以在可组合的“登录”屏幕中使用以下代码:

    // Getting your activity in a composable function
    val activity = (LocalContext.current as? Activity)
    
    // Everything put inside this block will be done on each system backpress
    BackHandler {
        activity?.finish()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2021-04-26
      相关资源
      最近更新 更多