当我尝试运行我的应用程序时出现以下错误:
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}
嵌套的Address对象如下所示:
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();}
解决方法:
经过数小时的反复试验,似乎AndroID数据绑定在查看公共字段之前会查找getter.我的Order对象有一个名为getAddress的辅助方法
public class Order { public Address address; public String getAddress() { return address.addressline1 + address.addressline2; }}
绑定器调用该方法而不是访问公共地址字段.我把getAddress方法放在Address对象里面(可能应该在那里开始)并编译应用程序.
总结以上是内存溢出为你收集整理的Android DataBinding错误.找不到访问者全部内容,希望文章能够帮你解决Android DataBinding错误.找不到访问者所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)