android - 使用导航组件时,DialogFragment 不会关闭

标签 android navigation dialog android-jetpack

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

这是我的导航图

    <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 Activity 中,我可以轻松地使用以下方法显示对话框:
navController?.navigate(R.id.action_validateProductExpFragment_to_enterAisleNameDialog)

然后,当在对话框上完成操作时,我调用:
navController?.navigate(R.id.action_enterAisleNameDialog_to_scanSummaryFragment)

但是这里下一个 fragment 显示在对话框 fragment 下方,它不会消失。

我在实现中遗漏了一些东西?

我可以调用 dismiss()在对话框上,但导航 Controller 没有这样做似乎很奇怪。

最佳答案

您调用的下一个 fragment 是 Fragment而当前的是 DialogFragment .对话框 fragment (导航组件中的 FloatingWindow)显示在对话框上方。
您可以通过调用以下方法在导航之前关闭对话框:navController?.popBackStack()或者navController?.popBackStack(R.id.your_dialogfragment_id, true)更好的是,您可以定义您的操作 R.id.action_enterAisleNameDialog_to_scanSummaryFragment通过指定 popUpTo 自动弹出对话框为行动。将对话框本身指定为 popUpTo 目标,并将 popInclusive 设置为 true。
现在,当您导航到此操作时,它会首先弹出(关闭)对话框,然后导航到您的 fragment 。
popUpTo

关于android - 使用导航组件时,DialogFragment 不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56884167/

相关文章:

Linux 和 GTK : GtkFileSelection vs. GtkFileChooserDialog

带有列表的 Android 对话框在滚动时使用自定义列表适配器随机丢失信息

java - OnClick() 方法在 TextView 中不起作用

jsf - javax.faces.DEFAULT_SUFFIX 不起作用

android - 在 fragment 内的异步任务中显示()进度对话框

android - 我如何使用 Youwave (for android) 作为 Android Studio 的模拟器?

html - 水平导航子菜单对齐 CSS

javascript - 如何在 jquery 对话框上正确加载 html 代码?

android - 让 GridView 项目完全正方形

android - setBackgroundColor() 和 setBackground() 在 android 中是互斥的