找不到属性'android:tag'的getter - Android

时间:2017-05-18 09:27:34

标签: android android-databinding

我正在使用数据绑定,我在这里遇到了这个问题:

SELECT DISTINCT m.*,
CASE ISNULL(t.typeId,0) WHEN 0 THEN 'NO' ELSE 'YES' END AS IsOverlapping   
 FROM #MyRanges m
LEFT OUTER JOIN #dbtable t
ON t.typeId = m.typeId
AND 
(t.tbl1_NumberFrom BETWEEN m.myr_NumberFrom AND m.myr_NumberTo
OR
t.tbl1_NumberTo BETWEEN m.myr_NumberFrom AND m.myr_NumberTo)

虽然,text属性工作正常但在使用tag元素时出错。

Error:(252, 21) Cannot find the getter for attribute 'android:tag'
with value type java.lang.String on com.hdfcfund.investor.views.EditText. 

2 个答案:

答案 0 :(得分:2)

您需要定义@InverseBindingAdapter以从属性返回值:

@InverseBindingAdapter(attribute = "android:tag")
public static String getStringTag(EditText view) {
    return String.valueOf(view.getTag());
}

答案 1 :(得分:2)

android:tag属性默认情况下不支持双向绑定。这是因为没有事件机制在属性更改时通知。

您可能打算使用单向绑定:

android:tag="@{nominee.nomineeAddress.countryCode}"

用户无法更改标记值,因此无论如何,双向对该属性的使用并不多。