从片段导航到 activity 时,后台堆栈不清除

backstack does not clear while navigating from fragment to activity

这是我的代码

<fragment
  android:id="@+id/fragment1"
  android:name="com.example.app.Fragment1"
  android:label="SignatureFragment"
  tools:layout="@layout/layout_fragment1">
    <action
      android:id="@+id/action_fragment1_to_main_activity"
      app:destination="@id/main_activity"
      app:enterAnim="@anim/slide_in_from_right"
      app:exitAnim="@anim/no_anim"
      app:launchSingleTop="true"
      app:popEnterAnim="@anim/no_anim"
      app:popExitAnim="@anim/slide_out_to_right"
      app:popUpTo="@id/navigation_graph_id"
      app:popUpToInclusive="true" />
</fragment>

<activity
  android:id="@+id/main_activity"
  android:name="com.example.app.MainActivity"
  android:label="MainActivity"
  tools:layout="@layout/activity_main" />

现在是导航代码

findNavController().navigate(R.id.action_fragment1_to_main_activity)

当我导航到 activity 并按返回时,fragment 仍然存在。我想在打开 activity.

后清除后台堆栈

我尝试删除动画,也尝试删除 app:launchSingleTop,但没有成功。

编辑 Jetpack Navigation 旨在与单个 activity 一起使用,并且不完全支持 activity 将参数传递给 actions

的导航

因此,当从一个 activity 导航到另一个时要清除堆栈,您仍然需要调用 activity.finish()

编辑结束

问题是 findNavController().navigate(R.id.action_fragment1_to_main_activity) 行不通。

尝试通过 navigate(@NonNull NavDirections directions) 导航。在你的情况下,它看起来像这样

findNavController().navigate(
     Fragment1Directions.actionFragment1ToMainActivity())

希望对您有所帮助。