class BaseActivity<VB : ViewBinding, VM : BaseViewModel> constructor(
val inflater: (LayoutInflater) -> VB,
private val clazz: Class<VM>
) :AppCompatActivity() {
protected lateinit var binding: VB
protected lateinit var viewModel: VM
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding=inflater(layoutInflater)
setContentView(binding.root)
viewModel=ViewModelProvider(this).get(clazz)
}
}
open class BaseViewModel : ViewModel(), LifecycleObserver {
}
class MainActivity : BaseActivity<ActivityMainBinding, BaseViewModel>(
ActivityMainBinding::inflate,
BaseViewModel::class.java
) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}