当用户在导航组件中按下后退按钮时如何退出应用程序?

How to exit the app when the user press back button in navigation component?

我正在尝试实现这个场景。我有一个带有登录按钮的登录屏幕。当用户单击按钮并通过身份验证时,我将用户发送到配置文件屏幕。当用户点击后退按钮时,问题就来了。它没有存在该应用程序,而是返回到登录屏幕,这很糟糕。如果我有活动,我会在前进到配置文件 activity 时在登录 activity 中调用 finish(),当用户按下后退时,它会退出应用程序。如何使用导航做同样的事情?

您需要清除导航堆栈。您可以通过多种方式做到这一点。

例如,如果您知道返回堆栈中只有一个项目,则可以使用 popBackStack:

navController.popBackStack()
navController.navigate(Destinations.Profile)

或者您可以使用 popUpTo 并指定您想要弹出的第一个目的地,然后添加 inclusive 参数:

navController.navigate(Destinations.Profile) {
    popUpTo(Destinations.Login) {
        inclusive = true
    }
}