在我的应用程序中,我使用了一个Activity和四个Fragment。在这个应用程序中,我使用了Navigation组件。我的Fragment加载顺序是A->B->C->D。
在Fragment D中,当设备的返回按钮按下时,我想从后退栈中移除Fragment C,以便可以打开Fragment B。请问有什么建议或方法可以实现吗?谢谢!
这是我的navigation_graph.xml文件。
<?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/firstFragment"
>
<fragment
android:id="@+id/firstFragment"
android:name="com.education.javaprogramming.fragments.MainFragment"
android:label="fragment_first"
tools:layout="@layout/activity_main" >
<action
android:id="@+id/action_firstFragment_to_displayList1Fragment"
app:destination="@id/displayList1Fragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<action
android:id="@+id/action_firstFragment_to_displayList2Fragment"
app:destination="@id/displayList2Fragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<action
android:id="@+id/action_firstFragment_to_helpFragment"
app:destination="@id/helpFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<action
android:id="@+id/action_firstFragment_to_quizzFragment"
app:destination="@id/quizzFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
</fragment>
<fragment
android:id="@+id/displayList1Fragment"
android:name="com.education.javaprogramming.fragments.DisplayList1Fragment"
android:label="fragment_display_list1"
tools:layout="@layout/fragment_display_list1"
>
<argument
android:name="position1"
app:argType="integer" />
<action
android:id="@+id/action_displayList1Fragment_to_firstFragment"
app:destination="@id/firstFragment" />
<argument
android:name="name"
app:argType="string" />
<action
android:id="@+id/action_displayList1Fragment_to_displayList2Fragment"
app:destination="@id/displayList2Fragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
</fragment>
<fragment
android:id="@+id/displayList2Fragment"
android:name="com.education.javaprogramming.fragments.DisplayList2Fragment"
android:label="fragment_display_list2"
tools:layout="@layout/fragment_display_list2" >
<action
android:id="@+id/action_displayList2Fragment_to_displayList1Fragment"
app:destination="@id/displayList1Fragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<action
android:id="@+id/action_displayList2Fragment_to_firstFragment"
app:destination="@id/firstFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<argument
android:name="position1"
app:argType="integer" />
<argument
android:name="position2"
app:argType="integer" />
<argument
android:name="name"
app:argType="string" />
<action
android:id="@+id/action_displayList2Fragment_to_displayListInDeFragment"
app:destination="@id/displayListInDeFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
</fragment>
<fragment
android:id="@+id/displayListInDeFragment"
android:name="com.education.javaprogramming.fragments.DisplayListInDeFragment"
android:label="fragment_display_list_in_de"
tools:layout="@layout/fragment_display_list_in_de" >
<action
android:id="@+id/action_displayListInDeFragment_to_displayList2Fragment"
app:destination="@id/displayList2Fragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<argument
android:name="position1"
app:argType="integer" />
<argument
android:name="position2"
app:argType="integer" />
<argument
android:name="position3"
app:argType="integer" />
<argument
android:name="name"
app:argType="string" />
</fragment>
<fragment
android:id="@+id/helpFragment"
android:name="com.education.javaprogramming.fragments.HelpFragment"
android:label="fragment_help"
tools:layout="@layout/fragment_help" >
<action
android:id="@+id/action_helpFragment_to_firstFragment"
app:destination="@id/firstFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<argument
android:name="position1"
app:argType="integer" />
<argument
android:name="name"
app:argType="string" />
<action
android:id="@+id/action_helpFragment_to_aboutFragment"
app:destination="@id/aboutFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
</fragment>
<fragment
android:id="@+id/aboutFragment"
android:name="com.education.javaprogramming.fragments.AboutFragment"
android:label="fragment_about"
tools:layout="@layout/fragment_about" >
<action
android:id="@+id/action_aboutFragment_to_helpFragment"
app:destination="@id/helpFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
</fragment>
<fragment
android:id="@+id/quizzFragment"
android:name="com.education.javaprogramming.fragments.QuizzFragment"
android:label="fragment_quizz"
tools:layout="@layout/fragment_quizz" >
<action
android:id="@+id/action_quizzFragment_to_firstFragment"
app:destination="@id/firstFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<action
android:id="@+id/action_quizzFragment_to_displayExamFragment"
app:destination="@id/displayExamFragment" />
</fragment>
<fragment
android:id="@+id/displayExamFragment"
android:name="com.education.javaprogramming.fragments.DisplayExamFragment"
android:label="fragment_display_exam"
tools:layout="@layout/fragment_display_exam" >
<action
android:id="@+id/action_displayExamFragment_to_quizzFragment"
app:destination="@id/quizzFragment"
app:enterAnim="@anim/enter"
app:exitAnim="@anim/exit"
app:popEnterAnim="@anim/pop_enter"
app:popExitAnim="@anim/pop_exit"
/>
<argument
android:name="position1"
app:argType="integer" />
<action
android:id="@+id/action_displayExamFragment_to_resultFragment"
app:destination="@id/resultFragment" />
</fragment>
<fragment
android:id="@+id/resultFragment"
android:name="com.education.javaprogramming.fragments.ResultFragment"
android:label="fragment_result"
tools:layout="@layout/fragment_result" >
<action
android:id="@+id/action_resultFragment_to_quizzFragment"
app:destination="@id/quizzFragment" />
<argument android:name="givenAnswers"
app:argType="reference"
/>
<argument android:name="actualAnswers"
app:argType="reference"
/>
</fragment>
</navigation>