如何使用导航组件同时关闭 DialogFragment 和父片段

时间:2021-01-28 10:18:09

标签: android navigation

我有两个片段和一个全屏对话框片段,它们的导航方式如下:

片段 1 > 片段 2 > 全屏对话框片段。

当我关闭 dialogFragment 时,我想回到 Fragment 1 而不显示 Fragment 2。

我现在做的是

在片段 1 中:

navController.navigate(R.id.Fragment2, bundleOf(), navOptions)

在片段 2 中:

override fun onAttachFragment(childFragment: Fragment) {
    if (childFragment is DialogFragment) {
        childFragment.dismissButtonClickListener = {
            requireActivity().onBackPressed()
        }
    }
}

在对话框片段中:

var dismissButtonClickListener: (DialogFragment.() -> Unit)? = null

dismiss_button.setOnClickListener {
            dismiss()
            actionButtonClickListener?.invoke(this)
        }

这工作得很好。但是,当 DialogFragment 被关闭时,父片段(Fragment 2)会显示一秒钟,就像用户按下了后退按钮一样。有没有办法直接从 DialogFragment 返回 Fragment1 而不显示 Fragment2?

0 个答案:

没有答案