Так что сейчас, когда я иду к Fragment B
из Fragment A
, и показываю диалог в onCreate()
из Fragment B
, а затем закрываю его (нажав на кнопку закрытия диалогового окна) и иду назад к предыдущему фрагменту (Fragment A
) по какой-то причине снова появляется диалоговое окно (в Fragment A
). Если я повторю действие, например, 5 раз и вернусь к каждому из этих 5 раз (к предыдущему фрагменту [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()
}
}
}
Это мой вид деятельности основной пресс спины тело:
supportFragmentManager.popBackStack()