当前位置: 首页 > 知识库问答 >
问题:

Android导航组件清除堆栈

党宇定
2023-03-14

我已经从连接到NavController的导航抽屉中导航到了DialogFragment。但当我导航到另一个目标时,我已经将弹出窗口设置为包含对话框片段,但它并没有清除堆栈。如何清除堆栈?

AM从LogoutDialog调用此方法

findNavController()。导航(R.id.action\u logout dialog\u to\u auth\u navigation)

我只使用片段和一个活动。

这是我导航图的一部分

 <fragment
        android:id="@+id/homeFragment"
        android:name="io.ui.home.HomeFragment"
        tools:layout="@layout/fragment_home" >
        <action
            android:id="@+id/action_homeFragment_to_auth_navigation"
            app:destination="@id/auth_navigation"
            app:popUpTo="@id/homeFragment"
            app:popUpToInclusive="true" />
        <argument
            android:name="fromLogin"
            app:argType="boolean"
            android:defaultValue="false" />
    </fragment>

    <dialog
        android:id="@+id/logoutDialog"
        android:name="io.ui.dialog.LogoutDialog"
        android:label="LogoutDialog" >
        <action
            android:id="@+id/action_logoutDialog_to_auth_navigation"
            app:destination="@id/auth_navigation"
            app:popUpTo="@id/logoutDialog"
            app:popUpToInclusive="true" />
    </dialog>

    <!-- auth navigation graph -->
    <navigation
        android:id="@+id/auth_navigation"
        app:startDestination="@id/loginFragment">
        <fragment
            android:id="@+id/loginFragment"
            android:name="io.ui.login.LoginFragment"
            android:label="fragment_login"
            tools:layout="@layout/fragment_login">
            <action
                android:id="@+id/action_loginFragment_to_OTPFragment"
                app:destination="@id/OTPFragment"
                app:popUpTo="@id/loginFragment"
                app:popUpToInclusive="true" />
            <action
                android:id="@+id/action_loginFragment_to_homeFragment"
                app:destination="@id/homeFragment" />
            <action
                android:id="@+id/action_loginFragment_to_resetPasswordFragment"
                app:destination="@id/resetPasswordFragment" />
        </fragment>

        <fragment
            android:id="@+id/OTPFragment"
            android:name="io.ui.login.OTPFragment"
            android:label="fragment_otp"
            tools:layout="@layout/fragment_otp">
            <action
                android:id="@+id/action_OTPFragment_to_homeFragment"
                app:destination="@id/homeFragment"
                app:popUpTo="@id/OTPFragment"
                app:popUpToInclusive="true" />
            <action
                android:id="@+id/action_OTPFragment_to_loginFragment"
                app:destination="@id/loginFragment"
                app:popUpTo="@id/OTPFragment"
                app:popUpToInclusive="true" />
        </fragment>
        <fragment
            android:id="@+id/resetPasswordFragment"
            android:name="io.ui.profile.PasswordFragment"
            android:label="fragment_reset_password"
            tools:layout="@layout/fragment_password" >
            <argument
                android:name="isReset"
                app:argType="boolean"
                android:defaultValue="false" />
        </fragment>

    </navigation>

共有1个答案

巩才捷
2023-03-14

你正在寻找这些属性来付诸行动。

>

如果属性为false或未设置,popUpTo将删除到指定目的地的目的地,但将指定目的地保留在后堆栈中。

如果将“PoputInclusive”设置为true,则“PoputTo”属性将从后堆栈中删除指定目的地之前(包括该目的地)的所有目的地。

如果popuptinclusive为true,并且将popUpTo设置为应用程序的起始位置,则该操作将从后堆栈中删除所有应用程序目标。后退按钮将用户带出应用程序。

编辑:我还添加了这段非常棒的视频,用示例进行了解释https://www.youtube.com/watch?v=mLfWvSGG5c8

 类似资料:
  • 当显示主片段时,我试图清除后堆栈中的所有片段。在导航图中,我添加了这个动作 在登录片段中。我尝试了findNavController()。导航(LoginFragmentDirections.actionLoginFragmentToHomeFragment()) 和 我从这里的文件中了解到https://developer.android.com/guide/navigation/navigat

  • 问题内容: 我有4页。 从第1页>第2页>第3页>第4页。 用户到达page_3并单击按钮后,它将导航到page_4。单击该按钮后,我想清除所有导航历史记录,以便当用户返回page_4时,该应用程序退出而不是返回至page_3。 我试过了: 但是什么也没发生。我仍然可以返回page_3,page_2等。如何做到这一点,以便当用户单击page_3上的按钮时,他可以转到page_4,而从page_4不

  • 我正在使用Android中新的导航架构组件。我有三个片断,逻辑片断,主片断,解决片断。主机片段是LoginFragment,登录成功时转到MainFragment,在MainFragment中转到SettingFragment,注销转到LoginFragment。

  • 我正在使用android中的新导航架构组件,在移动到一个新的片段后,我被困在清除导航堆栈中。 示例:我在loginFragment中,当我导航到home片段时,我希望该片段从堆栈中清除,这样当用户按下back按钮时,他就不会返回到loginFragment。 我正在使用一个简单的navhostfragment.findnavcontroller(Fragment).navigate(r.id.ho

  • 我正在一个新的Android应用程序上使用导航组件,但我不知道怎么做 首先,我有我的主活动,我有main_navigation_graph 主要活动 NavHostFragment main_navigation_graph里面有3个碎片 这里一切都很好。问题是当我到达最后一个片段时,因为在这个片段上,我想根据BottomNavigationView输入(暂时)显示一些子片段(在新的NavHost

  • 本文向大家介绍Android组件创建DrawerLayout导航,包括了Android组件创建DrawerLayout导航的使用技巧和注意事项,需要的朋友参考一下 概述 本篇博客是对developer.android.com/上的Training课程的简单翻译,若是觉得翻译出来的理解有困难,请点击下方链接查看原文! 关于DrawerLayout的Training:http://developer.