问题描述
我有一个片段,我正在尝试显示和关闭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 (将#修改为@)