【发布时间】:2019-12-04 19:49:33
【问题描述】:
专家,
我正在尝试抑制双向绑定属性 (Android/Kotlin) 的 safeUnbox 警告。为此,我为不同的数据类型创建了一个带有自定义拆箱函数的单例(见下文)。
我的构建失败并出现以下错误。这可能是因为 Kotlin 使用 kotlin.Boolean 作为“checked”变量的数据类型,而 Binding 功能使用 java.lang.Boolean。
非常感谢我如何解决此问题的任何建议。谢谢!
错误信息: ****/ 数据绑定错误 ****msg:cannot find method unbox(java.lang.Boolean) in class com.example.ui.bindingAdapters.InverseSafeUnboxBindingAdapter
ViewModel 定义:
var checked = MutableLiveData(false)
card_example.xml:
<com.google.android.material.checkbox.MaterialCheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@={com.example.ui.bindingAdapters.InverseSafeUnboxBindingAdapter.unbox(vm.checked)}"/>
绑定适配器:
package com.example.ui.bindingAdapters
import androidx.databinding.InverseMethod
object InverseSafeUnboxBindingAdapter {
@InverseMethod("boxBoolean")
fun unbox(b: Boolean?): Boolean {
return b as Boolean
}
fun boxBoolean(b: Boolean): Boolean? {
return b
}
}
【问题讨论】:
标签: android kotlin data-binding android-databinding