我有三个片段 Fragment1-> Fragment3-> Fragment4 ,因此,如果单击 Fragment4 中的后退按钮>我需要使用导航组件转到 Fragment1 ,我看到了popUpto
,但我不理解。
你能告诉我我做错了吗?
我使用了popUpTo
属性,但这不起作用
<?xml version="1.0" encoding="utf-8"?>
<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/navigation_graph"
app:startDestination="@id/first_fragment">
<fragment
android:id="@+id/first_fragment"
android:name="com.example.navbottom.ui.navScreen.fragments.FirstFragment"
android:label="first_fragment"
tools:layout="@layout/fragment_first">
<action
android:id="@+id/action_first_fragment_to_third_fragment"
app:destination="@id/third_fragment" />
</fragment>
<fragment
android:id="@+id/third_fragment"
android:name="com.example.navbottom.ui.navScreen.fragments.ThirdFragment"
android:label="Third_Fragment"
tools:layout="@layout/fragment_third" >
<action
android:id="@+id/action_third_fragment_to_fourth_fragment"
app:destination="@id/fourth_fragment" />
</fragment>
<fragment
android:id="@+id/fourth_fragment"
android:name="com.example.navbottom.ui.navScreen.fragments.FourthFragment"
android:label="fragment_fourth"
tools:layout="@layout/fragment_fourth" >
<action
android:id="@+id/action_fourth_fragment_to_first_fragment"
app:destination="@id/first_fragment"
app:popUpTo="@id/fourth_fragment"
app:popUpToInclusive="false"/>
</fragment>
</navigation>
没有任何反应 Fragment4-> Fragment3-> Fragment1
答案 0 :(得分:0)
我正在解决相同的问题,我认为解决方案是
<action
android:id="@+id/action_third_fragment_to_fourth_fragment"
app:destination="@id/fourth_fragment"
app:popUpTo="@id/first_fragment"
app:popUpToInclusive="false"/>
导航到屏幕4时要删除后退堆栈(或弹出堆栈)。
对于3-> 4,您不需要包含在内。您的后排堆栈是:
1->导航至3
1-3->导航至4,将所有弹出 1
1-4->后退
1
<action
android:id="@+id/action_fourth_fragment_to_first_fragment"
app:destination="@id/first_fragment"
app:popUpTo="@id/first_fragment"
app:popUpToInclusive="true"/>
对于4-> 1,您需要删除“旧” 1,因此要包括popUpToInclusive
。
1->导航至3
1-3->导航至4,将所有弹出 1
1-4->导航至1
1-4-1 <-这就是为什么删除包括1在内的所有内容的原因。
这样,后退堆栈又变为“ 1”。