这是我的代码
<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)
当我导航至活动并按回去时,fragment
仍然存在。我想在打开活动后清除后退堆栈。
我尝试删除动画,也尝试删除app:launchSingleTop
,但没有成功。
答案 0 :(得分:1)
修改
Jetpack导航旨在用于单个活动,并且不完全支持将参数传递给action
s
因此从一个活动导航到另一个活动时要清除堆栈,您仍然需要调用activity.finish()
编辑结束
问题是findNavController().navigate(R.id.action_fragment1_to_main_activity)
无法正常工作。
尝试通过navigate(@NonNull NavDirections directions)
进行导航。就您而言,它看起来像这样
findNavController().navigate(
Fragment1Directions.actionFragment1ToMainActivity())
希望有帮助。