我正在制作一个基类,以便将所有子绑定(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/