我使用BindingAdapter来实现TextInputLayout字段的验证。我的对象有一个ObservableBoolean'有效',当被更改时将执行我的绑定适配器来设置/清除字段上的错误消息。它的伟大工程,但我现在看到下面的警告,希望解决这个问题:BindingAdapter弃用警告
警告:ObservableField和原始表兄弟直接用作 方法参数已被弃用,支持将很快被移除。使用 内容作为参数,而不是方法BindingUtils.setError
适配器:
@BindingAdapter({"error", "errorMsg"})
public static void setError(TextInputLayout view, ObservableBoolean isValid, String errorMsg){
String errorString = isValid.get() ? null : errorMsg;
view.setError(errorString);
}
而且绑定表达式:
<android.support.design.widget.TextInputLayout
app:error="@{viewModel.name.valid}"
app:errorMsg="@{@string/template_details_error_name_required}"
为了解决这个问题,我修改了适配器和绑定表达如下,但这导致新的弃用警告:
警告:不要在 表达式中显式调用ObservasbleFields上的'get()'。该支持即将被移除。 'viewModel.name.valid.get()'
修改适配器:
@BindingAdapter({"error", "errorMsg"})
public static void setError(TextInputLayout view, Boolean isValid, String errorMsg){
修改绑定表达式:
<android.support.design.widget.TextInputLayout
app:error="@{viewModel.name.valid.get()}"
app:errorMsg="@{@string/template_details_error_name_required}"
什么是现在要达致这所推荐的方法是什么?
此相关线程 Android Databinding BindingAdapter Error 问题在BindingAdapters中是否存在Observables的有效用例。也许这是一个。
感谢您解释类型是为您打包的。现在完美运作。 – sidecarcat