我是靠谱客的博主 会撒娇玫瑰,这篇文章主要介绍封装一个koltin版的BaseActivity(包含viewBinding),现在分享给大家,希望可以做个参考。

代码如下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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 } } }
复制代码
1
2

最后

以上就是会撒娇玫瑰最近收集整理的关于封装一个koltin版的BaseActivity(包含viewBinding)的全部内容,更多相关封装一个koltin版内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部