我的应用程序正在使用导航组件。 在本例中,我有四个片段加载顺序为A->B->C->D。 在D片段中,当我把它全部做完后,我想直接回到A片段中,同时去掉B,C,D片段。 有人能解决这个案子吗? 谢谢你的回应!
您可以通过检查文档中的目标情况来解决它们。
链接1
链接2
通过每个导航操作,向后堆栈添加一个目的地。 如果您要在此流中反复导航,那么您的后堆栈将包含每个目的地的多个集合(A,B,C,A,B,C,A等等)。 为了避免这种重复,您可以在将您从目标C带到目标A的操作中指定app:popupto和app:popuptoInclusive,如下例所示:
<fragment
android:id="@+id/c"
android:name="com.example.myapplication.C"
android:label="fragment_c"
tools:layout="@layout/fragment_c">
<action
android:id="@+id/action_c_to_a"
app:destination="@id/a"
app:popUpTo="@+id/a"
app:popUpToInclusive="true"/>
到达目的地C后,后堆栈包含每个目的地(A,B,C)的一个实例。 当导航回目的地A时,我们也弹出A,这意味着我们在导航的同时从堆栈中移除B和C。 使用app:popuptoinclusive=“true”,我们还将第一个A弹出堆栈,有效地清除它。 请注意,如果您不使用app:popuptoInclusive,那么您的后堆栈将包含两个目的地A的实例。