如何从一个片段导航到另一个片段并从堆栈中清除一些其他片段?
How to navigate from a fragment to another clearing some other fragments from the stack?
我有以下导航图
Frag A --> Frag B --> Frag C --> --> Frag D
\ /
-> Frag E <---------------
\
-> Frag F
我当前的堆栈是 [Frag A、Frag B、Frag C 和 Frag D]。知道我当前的目的地是 Frag D,并且我想从 Frag D 导航到 Frag E,并从堆栈中清除 Frag B、Frag C 和 Frag D,该怎么做?
当前堆栈:[片段 A、片段 B、片段 C 和 片段 D]
意图:导航到 Frag E,从堆栈中清除 [Frag B、Frag C 和 Frag D]
结果堆栈:[片段 A 和 片段 E]
如果您通过导航图操作进行导航,这将是一项简单的任务,只需指定您需要将操作弹出到特定片段,如下所示:
<fragment
android:id="@+id/D_Frag"
...
<action
android:id="@+id/action_DFrag_To_EFrag"
app:destination="@+id/E_Frag"
app:popUpTo="@+id/B_Frag"
app:popUpToInclusive="true"
/>
...
</fragment>
其中 popUpToInclusive
标志表示(您要弹出 B_Frag 包括 B_Frag(真)还是排除它(假))。
此操作将从栈顶弹出所有片段,直到到达 B_Frag,然后到达目的地 E_Frag。
并由
navigating through navigation graph actions
我的意思是你在 D Fragment 中使用像这样的代码行来导航
NavHostFragment.findNavController(DFrag.this)
.navigate(R.id.action_DFrag_To_EFrag);
N.B :代码中的三个点 (...) 表示我不在乎那里写的是什么代码,您可以删除三个点并包括随便你
我有以下导航图
Frag A --> Frag B --> Frag C --> --> Frag D
\ /
-> Frag E <---------------
\
-> Frag F
我当前的堆栈是 [Frag A、Frag B、Frag C 和 Frag D]。知道我当前的目的地是 Frag D,并且我想从 Frag D 导航到 Frag E,并从堆栈中清除 Frag B、Frag C 和 Frag D,该怎么做?
当前堆栈:[片段 A、片段 B、片段 C 和 片段 D]
意图:导航到 Frag E,从堆栈中清除 [Frag B、Frag C 和 Frag D]
结果堆栈:[片段 A 和 片段 E]
如果您通过导航图操作进行导航,这将是一项简单的任务,只需指定您需要将操作弹出到特定片段,如下所示:
<fragment
android:id="@+id/D_Frag"
...
<action
android:id="@+id/action_DFrag_To_EFrag"
app:destination="@+id/E_Frag"
app:popUpTo="@+id/B_Frag"
app:popUpToInclusive="true"
/>
...
</fragment>
其中 popUpToInclusive
标志表示(您要弹出 B_Frag 包括 B_Frag(真)还是排除它(假))。
此操作将从栈顶弹出所有片段,直到到达 B_Frag,然后到达目的地 E_Frag。
并由
navigating through navigation graph actions
我的意思是你在 D Fragment 中使用像这样的代码行来导航
NavHostFragment.findNavController(DFrag.this)
.navigate(R.id.action_DFrag_To_EFrag);
N.B :代码中的三个点 (...) 表示我不在乎那里写的是什么代码,您可以删除三个点并包括随便你