【问题标题】:Clear Back stack in Android navigation Component在 Android 导航组件中清除返回堆栈
【发布时间】:2020-11-19 14:40:07
【问题描述】:

当显示主片段时,我正在尝试从返回堆栈中清除所有片段。 在导航图中,我添加了此操作

<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().navigate(LoginFragmentDirections.actionLoginFragmentToHomeFragment())

和

findNavController().navigate(R.id.action_loginFragment_to_homeFragment)

据我了解这里的文档https://developer.android.com/guide/navigation/navigation-navigate popUpTo 清除所有堆栈,直到目的地。但是当我按下返回时,什么都没有清除。

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

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

【问题讨论】:

    标签: android android-jetpack-navigation


    【解决方案1】:

    清除后台堆栈中的所有片段对我有用的是在 popUpTo 值中添加图形 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>
    

    当我添加popUpTo = @+id/login_fragment。它只删除了登录片段。

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多