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( 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(private val creator: () -> T) : ViewModelProvider.Factory { override fun create(modelClass: Class): T { return creator() as T } } override fun onDestroyView() { super.onDestroyView() _binding = null } }