当用户在导航组件中按下后退按钮时如何退出应用程序?
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
}
}
我正在尝试实现这个场景。我有一个带有登录按钮的登录屏幕。当用户单击按钮并通过身份验证时,我将用户发送到配置文件屏幕。当用户点击后退按钮时,问题就来了。它没有存在该应用程序,而是返回到登录屏幕,这很糟糕。如果我有活动,我会在前进到配置文件 activity 时在登录 activity 中调用 finish()
,当用户按下后退时,它会退出应用程序。如何使用导航做同样的事情?
您需要清除导航堆栈。您可以通过多种方式做到这一点。
例如,如果您知道返回堆栈中只有一个项目,则可以使用 popBackStack
:
navController.popBackStack()
navController.navigate(Destinations.Profile)
或者您可以使用 popUpTo
并指定您想要弹出的第一个目的地,然后添加 inclusive
参数:
navController.navigate(Destinations.Profile) {
popUpTo(Destinations.Login) {
inclusive = true
}
}