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

清除Android导航组件中的后台堆栈

何嘉运
2023-03-14

当显示主片段时,我试图清除后堆栈中的所有片段。在导航图中,我添加了这个动作

<fragment
       android:id="@+id/loginFragment"
       android:name="com.test.navTest.ui.fragment.LoginFragment"
       android:label="fragment_login"
       tools:layout="@layout/login_fragment"
       >
       <action
           android:id="@+id/action_loginFragment_to_homeFragment"
           app:destination="@id/homeFragment"
           app:popUpTo="@+id/homeFragment"

           />
 </fragment>

在登录片段中。我尝试了findNavController()。导航(LoginFragmentDirections.actionLoginFragmentToHomeFragment())

findNavController()。导航(R.id.action\u loginFragment\u to\u homeFragment)

我从这里的文件中了解到https://developer.android.com/guide/navigation/navigation-navigate该弹出按钮将清除所有堆栈,直到到达目标。但当我按下按钮时,什么都没有清除。

更新:我将此操作更改为popUpTo=Login。它只删除了登录片段,而不是之前的2个片段。我应该在登录之前为片段的操作添加任何参数

<action
            android:id="@+id/action_loginFragment_to_homeFragment"
            app:destination="@id/homeFragment"
            app:popUpTo="@+id/loginFragment"
            app:popUpToInclusive="true" />```

共有1个答案

仲孙兴旺
2023-03-14

在清除backbackback中的所有片段时,我所做的工作是将图id添加到弹出窗口中的值

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/nav_graph"
    app:startDestination="@id/splashFragment">
     <fragment
        android:id="@+id/loginFragment"
        android:name="com.test.navTest.ui.fragment.LoginFragment"
        android:label="fragment_login"
        tools:layout="@layout/login_fragment">
        <action
            android:id="@+id/action_loginFragment_to_homeFragment"
            app:destination="@id/homeFragment"
            app:popUpTo="@+id/nav_graph"
            app:popUpToInclusive="true" />
    
    </fragment>

当我添加poputo=@id/login\u片段时。它只删除了登录片段。

 类似资料:
  • 我已经从连接到NavController的导航抽屉中导航到了DialogFragment。但当我导航到另一个目标时,我已经将弹出窗口设置为包含对话框片段,但它并没有清除堆栈。如何清除堆栈? AM从LogoutDialog调用此方法 我只使用片段和一个活动。 这是我导航图的一部分

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

  • 我尝试使用Android导航组件,但后堆栈有问题。 我有片段A,B。要从A导航到B,我写下: 但我如何才能返回到点击的返回按钮?

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