取消对话框后,当我转到上一个片段时,如何防止出现对话框?

时间:2019-01-16 23:35:00

标签: android android-fragments alertdialog android-alertdialog

现在,当我从Fragment B转到Fragment A,并在onCreate()的{​​{1}}中显示一个对话框,然后关闭该对话框(通过单击关闭对话框)并返回上一个片段(Fragment B),由于某种原因(在Fragment A中),对话框再次出现。例如,如果我重复操作5次,然后再返回5次(回到上一个片段[Fragment A]),则对话框在前一个片段(Fragment A)中连续显示5次。由于某种原因,他正在记录所显示的对话框。

所以我的对话框代码是这样的:

Fragment A

我对该片段中的对话框的调用是:

fun Fragment.showDialog(fragment: DialogFragment, tag: String) {
    val ft = fragmentManager?.beginTransaction()
    val dialog = fragmentManager?.findFragmentByTag(tag) as? DialogFragment
    dialog?.let {
        ft?.remove(it)
    }
    dialog.
    ft?.addToBackStack(null)
    fragment.show(ft, tag)
}

我的成功对话框片段是:

showDialog(SuccessDialog.newInstance(), SuccessDialog.TAG)

这是我的活动主要后背压身:

class SuccessDialog : DialogFragment() {

    companion object {
        const val TAG = "SUCESS_DIALOG"
        fun newInstance() = SuccessDialog()
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View =
            inflater.inflate(R.layout.dialog_success, container, false)

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        dialog?.window?.setBackgroundDrawableResource(android.R.color.transparent)
        dialog?.window?.setDimAmount(0.8f)

        closeButton.setOnClickListener {
           dialog.cancel()
            dialog.dismiss()
        }

    }
}

0 个答案:

没有答案