Kotlin 如何将绑定初始化为属性(android viewmodel)?
我希望变量绑定是一个属性,这样所有方法都可以访问它,但我不知道如何初始化它Kotlin 如何将绑定初始化为属性(android viewmodel)?,kotlin,mvvm,viewmodel,Kotlin,Mvvm,Viewmodel,我希望变量绑定是一个属性,这样所有方法都可以访问它,但我不知道如何初始化它 val binding: pendaftaranBinding= DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false) 到 初始化init{}块中的属性 您可以分配该类型,然后在init{}块中执行一些任务后对其进行初始化 val绑定:pendaftaranBinding 初始化{ ... binding=D
val binding: pendaftaranBinding=
DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
到
初始化init{}块中的属性
您可以分配该类型,然后在init{}块中执行一些任务后对其进行初始化
val绑定:pendaftaranBinding
初始化{
...
binding=DataBindingUtil.inflateinflater,R.layout.pendaftaran,container,false
...
}
稍后在代码中对其进行初始化
如果您不希望在类的构造中进行初始化,而希望稍后在代码中对其进行初始化,则可以使用:
lateinit变量绑定:pendaftaranBinding
有趣的功能{
...
binding=DataBindingUtil.inflateinflater,R.layout.pendaftaran,container,false
...
}
以便所有方法都可以访问它
我不理解这一行,好像你想要java中的静态属性,在类外初始化它。可以通过在kotlin中使用伴生对象来实现:
你的班级{
伴星{
lateinit变量绑定:pendaftaranBinding
}
}
有趣的初始化绑定{
YourClass.binding=
DataBindingUtil.inflateinflater,R.layout.pendaftaran,容器,false
}
以便所有方法都可以访问它
如果我理解正确,您的意思是希望在其他方法中访问pendaftaranBinding类型变量,那么您只需在类的主体中声明该变量
例如:
class YourActivity : AppCompatActivity() {
private lateinit var yourBinding: pendaftaranBinding
override fun onCreate() {
yourBinding = DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
}
private fun yourOtherMethod() {
yourBinding.yourView
}
}
或
您可以使用绑定代理,请阅读:
如果要使用val而不是var,以便所有方法都可以访问它,则不清楚要执行什么操作!为什么你还要把绑定对象放在伴生对象中?@ThunderCock检查代码前的段落和引号:
class YourActivity : AppCompatActivity() {
private lateinit var yourBinding: pendaftaranBinding
override fun onCreate() {
yourBinding = DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
}
private fun yourOtherMethod() {
yourBinding.yourView
}
}
lateinit var binding: pendaftaranBinding
init {
binding = DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
}