Fix AlertDialogFragment view lifecycle

pull/26/head
Koitharu 5 years ago
parent 72bedfd92e
commit 6e1fdcb19a

@ -3,7 +3,6 @@ package org.koitharu.kotatsu.base.ui
import android.app.Dialog import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.annotation.CallSuper import androidx.annotation.CallSuper
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
@ -21,23 +20,24 @@ abstract class AlertDialogFragment<B : ViewBinding> : DialogFragment() {
val inflater = activity?.layoutInflater ?: LayoutInflater.from(requireContext()) val inflater = activity?.layoutInflater ?: LayoutInflater.from(requireContext())
val binding = onInflateView(inflater, null) val binding = onInflateView(inflater, null)
viewBinding = binding viewBinding = binding
onViewCreated(binding.root, savedInstanceState)
return AlertDialog.Builder(requireContext(), theme) return AlertDialog.Builder(requireContext(), theme)
.setView(binding.root) .setView(binding.root)
.also(::onBuildDialog) .also(::onBuildDialog)
.create() .create()
} }
final override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = viewBinding?.root
@CallSuper @CallSuper
override fun onDestroyView() { override fun onDestroyView() {
viewBinding = null viewBinding = null
super.onDestroyView() super.onDestroyView()
} }
final override fun getView(): View? {
return viewBinding?.root
}
open fun onBuildDialog(builder: AlertDialog.Builder) = Unit open fun onBuildDialog(builder: AlertDialog.Builder) = Unit
protected abstract fun onInflateView(inflater: LayoutInflater, container: ViewGroup?): B protected abstract fun onInflateView(inflater: LayoutInflater, container: ViewGroup?): B

Loading…
Cancel
Save