gpt4 book ai didi

android - 如何将抽象与 ViewBinding 与基本 Activity 一起使用?

转载 作者:行者123 更新时间:2023-12-03 13:27:23 47 4
gpt4 key购买 nike

我正在制作一个基类,以便将所有子绑定(bind)设置在基类中
我已经做到了

abstract class BaseActivity2<B : ViewBinding?, T : BaseViewModel?> : AppCompatActivity() {
private var viewBinding: B? = null
private var baseViewModel: T? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
但我无法在 oncreat() 中绑定(bind) View
通常我们将 View 绑定(bind)中的布局绑定(bind)为
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)
但我正在寻找基本 Activity 的通用方式

最佳答案

您可以在构造函数中声明一个 lambda 属性来创建绑定(bind)对象

abstract class BaseActivity<B : ViewBinding>(val bindingFactory: (LayoutInflater) -> B) : AppCompatActivity() {
private lateinit var binding: B

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = bindingFactory(layoutInflater)
setContentView(binding.root)
}
}
您也可以定义 binding作为懒惰的属性(property)
private val binding: B by lazy { bindingFactory(layoutInflater) }
然后你需要覆盖你的 Activity 中的任何内容
class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate)

关于android - 如何将抽象与 ViewBinding 与基本 Activity 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63686289/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com