我使用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