41 lines
1.2 KiB
Kotlin
41 lines
1.2 KiB
Kotlin
package com.sw.platecabinet.fragment
|
|
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import androidx.fragment.app.Fragment
|
|
import androidx.lifecycle.ViewModel
|
|
import androidx.lifecycle.ViewModelProvider
|
|
import androidx.viewbinding.ViewBinding
|
|
|
|
abstract class BaseFragment<VB : ViewBinding>(
|
|
private val bindingInflater: (inflater: LayoutInflater, parent: ViewGroup?, attachToParent: Boolean) -> VB
|
|
) : Fragment() {
|
|
private var _binding: VB? = null
|
|
protected val binding get() = _binding!!
|
|
|
|
override fun onCreateView(
|
|
inflater: LayoutInflater,
|
|
container: ViewGroup?,
|
|
savedInstanceState: Bundle?
|
|
): View? {
|
|
_binding = bindingInflater(inflater, container, false)
|
|
initialize()
|
|
return binding.root
|
|
}
|
|
|
|
abstract fun initialize()
|
|
|
|
class ViewModelFactory<T : ViewModel>(private val creator: () -> T) :
|
|
ViewModelProvider.Factory {
|
|
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
|
return creator() as T
|
|
}
|
|
}
|
|
|
|
override fun onDestroyView() {
|
|
super.onDestroyView()
|
|
_binding = null
|
|
}
|
|
} |