Android数据绑定BindingAdapter:"找不到setter"

时间:2017-11-22 13:19:15

标签: android android-databinding

此绑定属性无法构建,错误:

找不到属性" errorText"

的setter
@BindingAdapter({"errorText"})
public static void setErrorText(TextInputLayout view, String error) {
    view.setError(error);
}


    <android.support.design.widget.TextInputLayout
        android:id="@+id/email_layout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:errorEnabled="true"
        app:errorText="@{data.usernameError}"
        >
        ....

为什么这不起作用?

2 个答案:

答案 0 :(得分:0)

看来这个错误是由于BindingAdapter没有被编译造成的,因为完全不相关的代码中的其他地方存在源错误。那个其他的源错误(一个错误所以被引用的变量是使用不同的名称声明,所以不存在)在构建错误日志中不明确但是一旦我在源代码中看到它就很容易修复,反过来修复了BindingAdapter问题。

如果您看到此错误,请检查源和构建日志中的其他可能的构建错误。

答案 1 :(得分:0)

首先,setErrorText是公共的,因此您不需要在binding adapter中进行定义。 在BindingAdapter类中,如果没有定义errorText,它仍然可以工作(Confirmed!)

如果要在绑定适配器中定义,则必须进行如下更改:

@BindingAdapter("app:errorText")

希望这项帮助!