我曾用FragmentManager尝试过:
insert
并尝试使用Navigation.findNavController(mView).popBackStack()
。
FragmentManager
1。
val fm = activity!!.supportFragmentManager
2。
fm.popBackStack()
但是他们没有工作。我的意思是,似乎他们弹出了所有片段。
我还尝试在fm.popBackStackImmediate()
中应用这些属性:
graph_nav.xml
我在A片段和B片段中应用了它们。
我想从A片段转到B片段。而且我想清除B片段之前的所有片段堆栈,而只留下B片段。
答案 0 :(得分:0)
您需要将app:popUpToInclusive="true"
,app:launchSingleTop="true"
和app:popUpTo="nav_graph_id"
添加到nav_graph.xml中的操作标记。
<fragment
android:id="@+id/firstFragment"
android:name="com.example.ui.FirstFragment"
android:label="First"
tools:layout="@layout/fragment_first" >
<action
android:id="@+id/clearBackStack"
app:destination="@id/secondFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/nav_graph"
app:popUpToInclusive="true" /></fragment>
然后构建项目(以便创建路线文件),并编写以下代码:
findNavController().navigate(FirstFragmentDirections.clearBackStack())
即使您有几个nav_graph,也要设置主/家庭nav_graph的popUpTo的ID,而不是您编写此操作的ID。您的主要nav_graph是“ main_nav_graph.xml”,然后在“ some_other_nav_graph.xml”中编写以上代码,并设置main_nav_graph.xml的ID。