gpt4 book ai didi

android - 如何清除导航组件中的 fragment 堆栈?

转载 作者:行者123 更新时间:2023-12-03 23:11:31 26 4
gpt4 key购买 nike

我尝试过这样的 FragmentManager:

Navigation.findNavController(mView).popBackStack()

并尝试使用 FragmentManager .
val fm = activity!!.supportFragmentManager

1.
fm.popBackStack()

2.
fm.popBackStackImmediate()

但他们没有工作。我的意思是,似乎他们弹出了所有的 fragment 。

我还尝试在 graph_nav.xml 中应用这些属性:
app:launchSingleTop="true"
app:popUpToInclusive="true"

我将它们应用在 A fragment 和 B fragment 中。

我想从 A fragment 转到 B fragment 。我想清除 B fragment 之前的所有 fragment 堆栈,只留下 B fragment 。

最佳答案

您需要添加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_graphs,也请设置 main/home nav_graph 的 popUpTo 的 id,而不是您编写此操作的位置,例如你的主nav_graph是“main_nav_graph.xml”,你把上面的代码写在“some_other_nav_graph.xml”中,设置main_nav_graph.xml的id。

关于android - 如何清除导航组件中的 fragment 堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56627854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com