使用supportFragmentManager显示和关闭DialogFragment无效

问题描述

我有一个片段,我正在尝试显示关闭DialogFragment,如下所示

class MyFragmentFragment : Fragment() {

    private val TAG = "LoadingProgressDialogFragment"
    private val progressDialog = DialogFragment()


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }


    private fun setDialogFragmentLoading(isLoading: Boolean) {
        if (isLoading) {
            val fragmentManager = requireActivity().supportFragmentManager
            if (progressDialog != null && !progressDialog.isAdded && fragmentManager.findFragmentByTag(TAG) == null) {
                progressDialog.show(fragmentManager,TAG)
            }
        } else {
            val fragmentManager = requireActivity().supportFragmentManager
            if (fragmentManager != null) {
                try {
                    val fragment = fragmentManager.findFragmentByTag(TAG) as DialogFragment?
                    fragment!!.dismiss()
                } catch (ignored: Exception) {
                }
            }
        }
    }
}

如果我是第一次设置和取消设置,上面的方法就可以正常工作

setDialogFragmentLoading(true)
setDialogFragmentLoading(false)

但是,如果我多次这样做,则无法解雇。 进一步调试时,我添加了日志,发现以下行在多次调用时返回null

 val fragment = fragmentManager.findFragmentByTag(TAG) as DialogFragment?

我的理解是,如果我直接在 supportFragmentManager 显示,则无需创建交易,它就可以工作。

有人可以指出我在做什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)