c-a*_*-an 6 android android-fragments android-navigation
我像这样尝试使用 FragmentManager:
Navigation.findNavController(mView).popBackStack()
Run Code Online (Sandbox Code Playgroud)
并尝试使用FragmentManager.
val fm = activity!!.supportFragmentManager
Run Code Online (Sandbox Code Playgroud)
1.
fm.popBackStack()
Run Code Online (Sandbox Code Playgroud)
2.
fm.popBackStackImmediate()
Run Code Online (Sandbox Code Playgroud)
但他们没有工作。我的意思是,它们似乎弹出所有的片段。
我还尝试将这些属性应用于graph_nav.xml:
app:launchSingleTop="true"
app:popUpToInclusive="true"
Run Code Online (Sandbox Code Playgroud)
我将它们应用于 A 片段和 B 片段。
我想从A片段转到B片段。我想清除 B 片段之前的所有片段堆栈,只留下 B 片段。
小智 7
您需要将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>
Run Code Online (Sandbox Code Playgroud)
然后构建项目(以便创建方向文件),并编写:
findNavController().navigate(FirstFragmentDirections.clearBackStack())
Run Code Online (Sandbox Code Playgroud)
即使你有几个 nav_graphs,设置主/主 nav_graph 的 popUpTo id,而不是你写这个动作的那个,例如你的主 nav_graph 是“main_nav_graph.xml”,你在“some_other_nav_graph.xml”中编写上面的代码, 设置main_nav_graph.xml 的id。
| 归档时间: |
|
| 查看次数: |
10499 次 |
| 最近记录: |