Как предотвратить появление диалогового окна при переходе к предыдущему фрагменту после закрытия диалогового окна? - PullRequest
0 голосов
/ 17 января 2019

Так что сейчас, когда я иду к 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()
...