【发布时间】:2018-04-30 07:29:27
【问题描述】:
我正在尝试消除我的 Android 应用程序的所有警告,其中之一是:
viewModel.value 是一个装箱字段,但需要取消装箱才能执行 android:checked。这可能会导致 NPE,因此 Data Binding 将安全地将其拆箱。您可以更改表达式并使用 safeUnbox() 显式包装 viewModel.value 以防止警告
其中 value 是来自超类的通用 ObservableField:
public abstract class BaseDataTypeViewModel<T> extends BaseObservable {
public final ObservableField<T> value = new ObservableField<>();
...
}
并且在某处扩展为Boolean:
public class CheckBooleanDataTypeViewModel extends BaseDataTypeViewModel<Boolean> {
...
}
我在data binding - safeUnbox warning 上看到警告的发生是因为这是Boolean 而不是boolean,所以我尝试添加:android:checked="@={safeUnbox(viewModel.value)}" 而不是android:checked="@={viewModel.value}",但后来我收到错误消息说我无法反转 safeUnbox() 方法。
****/ data binding error ****msg:The expression android.databinding.DynamicUtil.safeUnbox(viewModelValue) cannot be reverse: There is no inverse for method safeUnbox, you must add an @InverseMethod annotation to the方法来指示在双向绑定表达式中使用时应该使用哪种方法
我正确理解这两个独立的问题,但我是否必须忍受警告以避免错误,或者它们是避免警告和错误的解决方案?它所说的@InverseMethod 呢?我没有设法添加此注释,因为该方法来自 android 包。
【问题讨论】:
标签: android warnings android-databinding