如何在 mvvm 架构中实现 BaseActivity?不使用依赖注入

How to implement a BaseActivity in mvvm architecture? Without using dependency Injection

我目前正在学习MVVM架构,

我试着做了一个 BaseActivity class.

我的基础活动:-

abstract class BaseActivity<ViewModel : BaseViewModel, Binding : ViewDataBinding> :
    AppCompatActivity(),
    EventListener {

    
    lateinit var binding: Binding
    private var viewModel: ViewModel? = null


    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
    

        binding = DataBindingUtil.setContentView(this, layoutid)
        this.viewModel = viewModel ?: getViewModel()
        binding.setVariable(getBindingVariable(), viewModel)
        binding.executePendingBindings()

   

    }


 
    @get: LayoutRes
    abstract val layoutid: Int

    abstract fun getViewModel(): ViewModel

    abstract fun getBindingVariable(): Int

  
    private fun getViewModelClass(): Class<ViewModel> {
        val type =
            (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0]          
        return type as Class<ViewModel>
    }


}

现在我在我的 SplashActivity 中使用这个 BaseActivity:-

class SplashScreen : BaseActivity<SplashScreenViewModel, ActivitySplashBinding>() {
    private lateinit var viewModel: SplashScreenViewModel


    


    override fun onFailure(message: String) {
    }

    override fun onStarted() {
    }

    override fun onSuccess() {
    }

    override fun getViewModel(): SplashScreenViewModel {
        viewModel = ViewModelProvider(this).get(SplashScreenViewModel::class.java)
        return viewModel
    }

    override fun getBindingVariable(): Int {
        return BR.splash_viewmodel
    }

    override val layoutid: Int
        get() = R.layout.activity_splash
    
}

我已经使用这个答案作为参考来实现这个BaseActivity.kt:How to have generic ViewModel in BaseActivty class

但是我在 运行 应用程序时 出现空白屏幕

你能告诉我这里的问题是什么或者如何制作这个 BaseActivity(不使用依赖注入)

你覆盖错了onCreate

override fun onCreate(savedInstanceState: Bundle?) {

几年前我也玩过类似的东西,你可以找到我的方法here