Android DataBinding错误。 找不到存取器

当我尝试运行我的应用程序时出现以下错误:

Error:Execution failed for task ':app:compileDevelopmentDebugJavaWithJavac'. > java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Could not find accessor java.lang.String.giftRecipientName redacted.xml loc:182:63 - 182:93 ****\ data binding error **** 

我有一个Order对象,如下所示:

 public class Order { public Address address; // unrelated fields and methods } 

嵌套的地址对象如下所示:

 public class Address { public String addressLine1; public String addressLine2; public String giftRecipientName; public Boolean isGift; } 

在我的.xml中,我正在做以下几点:

 <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="order" type="example.redacted.models.Order"/> </data> // widgets and whatnot <TextView android:id="@+id/gift_recipientTV" android:layout_column="1" android:layout_weight="1" android:layout_width="0dp" android:textStyle="bold" android:gravity="right" android:text='@{order.address.isGift ? order.address.giftRecipientName : "" }'/> 

最后在我的片段:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { RedactedBinding dataBinding = DataBindingUtil.inflate(inflater, R.layout.redacted, container, false); dataBinding.setOrder(_order); return dataBinding.getRoot(); } 

Solutions Collecting From Web of "Android DataBinding错误。 找不到存取器"

经过数小时的试验和错误,似乎Android数据绑定查看公共字段之前查找getter。 我的订单对象有一个称为getAddress的帮助方法

 public class Order { public Address address; public String getAddress() { return address.addressLine1 + address.addressLine2; } } 

活页夹正在调用该方法,而不是访问公共地址字段。 我把getAddress方法放在Address对象(它可能应该是开始的地方)和应用程序编译的地方。

当使用像mRP,sKU这样的variables名时,我得到了同样的错误。 它甚至发生getters那里。当我使用一些从线上自动生成的类时,这些发生在我身上。

重命名variables(例如:mRP – > mrp)并生成新的getter,解决问题或执行重构。