生成的数据绑定类有两个同名的方法,导致错误

时间:2016-05-30 03:44:06

标签: android android-edittext android-databinding

我有两个名为“attribute_short”和“attribute_long”的属性。

我的吸气鬼和二传手。

@Bindable
    public float getAttribute_long() {
        return attribute_long;
    }

    public void setPricePerBoxSingle_long(float attribute_long) {
        this.attribute_long= attribute_long;
        notifyPropertyChanged(com.foo.bar.baz.BR.attribute_long);
    }

@Bindable
    public float getAttribute_short() {
        return attribute_short;
    }

    public void setPricePerBoxSingle_short(float attribute_short) {
        this.attribute_short= attribute_short;            
        notifyPropertyChanged(com.foo.bar.baz.BR.attribute_short);
    }

两个编辑文本:

<EditText
    android:id="@+id/attributeInput_short"
    ...
    android:text="@={values.attribute_short}" />

<EditText
    android:id="@+id/attributeInput_long"
    ...
    android:text="@={values.attribute_long}" />

在生成的数据绑定类中,碰巧有两个具有相同名称的方法,这会导致错误。

private android.databinding.InverseBindingListener attributeInpu = new android.databinding.InverseBindingListener() {
        @Override
        public void onChange() {
            float callbackArg_0 = com.sample.Values.getText(attributeInput_short);
...

private android.databinding.InverseBindingListener attributeInpu = new android.databinding.InverseBindingListener() {
            @Override
            public void onChange() {
                float callbackArg_0 = com.sample.Values.getText(attributeInput_long);
...

错误:

Error:(196, 56) error: variable attributeInpu is already defined in class FragmentInputBinding

如何解决此重复生成的方法名称问题?

2 个答案:

答案 0 :(得分:4)

恕我直言,这可能与此报告的问题有关:http://code.google.com/p/android/issues/detail?id=212492

答案 1 :(得分:1)

似乎根据视图ID自动生成InverseBindingListener变量名。正如@BruceWayne所说,观点ID需要更短。我有同样的问题,这是我的解决方案。