39 lines
1.0 KiB
Kotlin
39 lines
1.0 KiB
Kotlin
package com.testapp
|
|
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import androidx.fragment.app.Fragment
|
|
import androidx.viewbinding.ViewBinding
|
|
|
|
abstract class ViewBindingFragment<VB : ViewBinding> : Fragment() {
|
|
|
|
private var _binding: ViewBinding? = null
|
|
abstract val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> VB
|
|
|
|
@Suppress("UNCHECKED_CAST")
|
|
protected val binding: VB
|
|
get() = _binding as VB
|
|
|
|
override fun onCreateView(
|
|
inflater: LayoutInflater,
|
|
container: ViewGroup?,
|
|
savedInstanceState: Bundle?
|
|
): View? {
|
|
_binding = bindingInflater.invoke(inflater, container, false)
|
|
return requireNotNull(_binding).root
|
|
}
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
super.onViewCreated(view, savedInstanceState)
|
|
viewSetup()
|
|
}
|
|
|
|
abstract fun viewSetup()
|
|
|
|
override fun onDestroyView() {
|
|
super.onDestroyView()
|
|
_binding = null
|
|
}
|
|
} |