概述
代码如下
abstract class BaseActivity<VM : BaseViewModel,VB : ViewBinding> : AppCompatActivity() {
protected lateinit var viewModel: VM
lateinit var binding: VB
var context: Context? = null
//初始化布局
abstract fun initView(savedInstanceState: Bundle?)
abstract fun initData()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initViewBinding()
//初始化上下文
context = application
//初始化控件
initView(savedInstanceState)
//初始化数据
initData()
}
private fun initViewBinding() {
binding = inflateBinding()
setContentView(binding.root)
createViewModel()
}
protected abstract fun inflateBinding(): VB
//页面跳转
open fun activityStart(ctx: Context, clazz: Class<Any>) {
var intent = Intent()
intent.setClass(ctx, clazz)
startActivity(intent)
overridePendingTransition(0, 0)
}
protected open fun viewModelFactory(): ViewModelProvider.Factory = ViewModelFactory()
/**
* 创建 ViewModel
*/
@Suppress("UNCHECKED_CAST")
private fun createViewModel() {
val type = javaClass.genericSuperclass
if (type is ParameterizedType) {
val tp = type.actualTypeArguments[0]
val tClass = tp as? Class<VM> ?: BaseViewModel::class.java
viewModel = ViewModelProvider(this, viewModelFactory()).get(tClass) as VM
}
}
}
最后
以上就是会撒娇玫瑰为你收集整理的封装一个koltin版的BaseActivity(包含viewBinding)的全部内容,希望文章能够帮你解决封装一个koltin版的BaseActivity(包含viewBinding)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复