如何将绑定初始化为 属性 (android 视图模型)?
how to initialize binding to be property (android viewmodel )?
我希望变量绑定是一个 属性 以便所有方法都可以访问它,但我不知道如何初始化它 (kotlin)
val binding: pendaftaranBinding=
DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
到
var binding: .........................
binding: pendaftaranBinding=
DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
在 init{} 块中初始化 属性
您可以分配 Type,然后在 init{} 块中执行一些任务后对其进行初始化。
val binding: pendaftaranBinding
init{
...
binding = DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
...
}
稍后在代码中初始化它
如果您不想在 class 的构造中进行初始化,而是稍后在代码中对其进行初始化,您可以使用 lateinit modifier:
lateinit var binding: pendaftaranBinding
fun someFunction() {
...
binding = DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
...
}
so that it can be accessed for all methods
我不明白这一行,好像你想要 java 中的静态属性之类的东西,在 class 之外初始化它。这可以通过在 kotlin 中使用伴随对象来完成:
class YourClass {
companion object {
lateinit var binding: pendaftaranBinding
}
}
fun initializeBinding() {
YourClass.binding =
DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
}
so that it can be accessed for all methods
如果我没理解错的话,你的意思是你想在其他方法中访问一个 pendaftaranBinding
类型的变量,那么你只需在 class 的主体中声明该变量即可。
示例:
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)
}
或
您可以使用绑定委托请阅读:this
如果你想使用 val 而不是 var
我希望变量绑定是一个 属性 以便所有方法都可以访问它,但我不知道如何初始化它 (kotlin)
val binding: pendaftaranBinding=
DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
到
var binding: .........................
binding: pendaftaranBinding=
DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
在 init{} 块中初始化 属性
您可以分配 Type,然后在 init{} 块中执行一些任务后对其进行初始化。
val binding: pendaftaranBinding
init{
...
binding = DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
...
}
稍后在代码中初始化它
如果您不想在 class 的构造中进行初始化,而是稍后在代码中对其进行初始化,您可以使用 lateinit modifier:
lateinit var binding: pendaftaranBinding
fun someFunction() {
...
binding = DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
...
}
so that it can be accessed for all methods
我不明白这一行,好像你想要 java 中的静态属性之类的东西,在 class 之外初始化它。这可以通过在 kotlin 中使用伴随对象来完成:
class YourClass {
companion object {
lateinit var binding: pendaftaranBinding
}
}
fun initializeBinding() {
YourClass.binding =
DataBindingUtil.inflate(inflater, R.layout.pendaftaran, container, false)
}
so that it can be accessed for all methods
如果我没理解错的话,你的意思是你想在其他方法中访问一个 pendaftaranBinding
类型的变量,那么你只需在 class 的主体中声明该变量即可。
示例:
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)
}
或
您可以使用绑定委托请阅读:this 如果你想使用 val 而不是 var