在导航控制器中杀死碎片



我的碎片流就像这样

Main -> A -> B -> C ->A

在片段C中,它具有一个提交按钮,该按钮将返回到A。当我按A中的返回按钮时,我希望它回到Main。但是它返回片段c。

在片段C中,我使用此

 findNavController().navigate(R.id.action_c_to_a)

nav_graph.xml

 <fragment
        android:id="@+id/fragmentC"
        android:name="xxx"
        android:label="xxx">
        <action
            app:launchSingleTop="true"
            app:popUpTo="@+id/fragmentA"
            app:popUpToInclusive="true"
            android:id="@+id/action_c_to_a"
            app:destination="@id/fragmentA" />
    </fragment>

为什么不弹出片段a?您只需致电findNavController().popBackStack(R.id.fragmentA, false)而不是通过操作导航。

尝试通过删除/杀死片段的片段来查看我的完整解决方案。

导航组件设置过渡动画编程

您可以覆盖返回按钮行为来执行此操作。提供自定义后背导航

这个想法是在不设置app:destination的情况下设置app:popUpTo。实际上,设置app:destination将创建一个片段并将其添加到背景中,这不是您想要的。

您可以删除:

app:destination="@id/fragmentA"

如果有:

app:popUpTo="@+id/fragmentA"

它确实会弹出背包,直到 fragmenta

相关内容

  • 没有找到相关文章

最新更新