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 : 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 } }