现在,当我从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()
}
}
}