如何使用 Android Jetpack 的导航组件禁用后退导航并删除片段上的后退箭头?

How do I disable back navigation and remove the back arrow on a Fragment, using Android Jetpack's Navigation component?

I am using Google's recommended single activity pattern with Android Jetpack's Navigation component.

片段 1 是一个身份验证屏幕。用户通过身份验证并导航到 Fragment 2 后,我想按下 Android 后退按钮关闭应用程序,并删除应用程序栏中的后退箭头。

我找到了一些方法,例如 onBackPressedDispatcher,可以从后退按钮中添加/删除功能,但没有任何方法也可以删除后退箭头。

我也曾尝试 app:popUpTo="@+id/firstFragment" 从片段 1 导航到片段 2,但这也不起作用。

这应该可以用一行代码指定。仍在努力寻找。有什么建议吗?

导航到 fragment2

时,您需要从 back-stack 中删除 fragment1

片段1

<fragment
android:id="@+id/fragment1"
android:name="packagenameforFragment1"
android:label="fragment1"
tools:layout="@layout/fragment_1" >
<action
    android:id="@+id/action_Fragment1_to_Fragment2"
    app:destination="@id/Fragment2_id"
    app:launchSingleTop="true"
    app:popUpTo="@+id/your_MainGraph_id"
    app:popUpToInclusive="true" />

然后当你从 fragment1 导航到 fragment2 时调用这个

findNavController(fragment).navigate(R.id.action_Fragment1_to_Fragment2)

要从 Fragment2 中删除后退按钮,您可以使用此

在Activity onCreate()

val appBarConfiguration = AppBarConfiguration
        .Builder(R.id.your_fragment2_id,R.id.any_other_ids_you_want)
        .build()

然后像这样设置工具栏

setupActionBarWithNavController(this, yourNavController, appBarConfiguration)