gpt4 book ai didi

android - 清除导航 Controller 的完整后台堆栈

转载 作者:行者123 更新时间:2023-12-04 23:59:57 26 4
gpt4 key购买 nike

我有一个带有登录流程的应用程序和所有这些应用程序的几个 fragment ,我可以访问一个抽屉导航,它可以选择退出应用程序。我不想将每个 fragment 都连接到我的初始屏幕,而是想在注销时将导航重置为初始屏幕。

我的代码是这样的:

private void resetNavController() {
mNavController.navigate(
R.id.splashScreenFragment,
null,
new NavOptions.Builder().setPopUpTo(R.id.splashScreenFragment, true).build()
);

它导航回初始屏幕但不会弹出整个后台堆栈。此外,如果我将 true 更改为 false,它不会按预期工作。我需要做什么才能弹出完整的后台堆栈?

最佳答案

在我尝试将 backstack 弹出到我的主图之前,我也一直在努力解决这个问题。

所以,我有一个全局操作:

<action
android:id="@+id/global_navigate_to_login"
app:destination="@id/login_navigation_graph"
app:launchSingleTop="true"
app:popUpTo="@id/main_navigation_graph"
app:popUpToInclusive="true">
<argument
android:name="startWithLogout"
android:defaultValue="true"
app:argType="boolean" />
</action>

该参数只是在授权刷新 token 过期时在用例的登录流程中注销用户的附加逻辑。 “login_navigation_graph”是包含登录流程的嵌套图。 “main_navigation_graph”是应用程序的主图。

为了调用这个全局操作:

supportFragmentManager
.navController()
.navigate(R.id.global_navigate_to_login)

整个后台堆栈被清除,用户被重定向到登录目的地。

关于android - 清除导航 Controller 的完整后台堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60138461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com