使用导航组件时,对话fragment不会解散



我是导航组件的新手,我想将其与自定义对话框片段一起使用。

这是我的nav_graph

    <dialog
        android:id="@+id/enterAisleNameDialog"
        android:name="com.cbplus.scan_product.view.EnterAisleNameDialog"
        android:label="EnterAisleNameDialog">
    <action
            android:id="@+id/action_enterAisleNameDialog_to_scanSummaryFragment"
            app:destination="@id/scanSummaryFragment"/>
</dialog>

在我的kotlin活动中,我很容易使用以下方式显示对话框

navController?.navigate(R.id.action_validateProductExpFragment_to_enterAisleNameDialog)

然后,当在对话框上完成操作时,我致电:

navController?.navigate(R.id.action_enterAisleNameDialog_to_scanSummaryFragment)

但是,这里的下一个片段在对话框片段下方显示,该片段不会消失。

我在实施中缺少一些东西吗?

我可以在对话框上调用dismiss(),但是NAV控制器没有这样做似乎很奇怪。

您要调用的下一个片段是Fragment,而当前的片段是DialogFragment。对话框片段是NAV组件中的浮动风口,显示在对话框上方。

您可以在通话之前撤消对话框:

navController?.popBackStack()

navController?.popBackStack(R.id.your_dialogfragment_id, true)

更好的是,您可以定义操作R.id.action_enterAisleNameDialog_to_scanSummaryFragment,以通过为操作指定popUpTo自动弹出对话框。将对话框本身指定为Popupto目的地,并将对话框设置为true。

现在,当您导航到此操作时,它将首先弹出(解散(对话框,然后导航到您的片段。

popUpTo

相关内容

  • 没有找到相关文章

最新更新