我在使用Integer数据类型实现双向绑定时遇到了一些问题.
public class User { private String firstname; private String lastname; private int age; public User() {} public voID setFirstname(String firstname) { this.firstname = firstname; } public String getFirstname() { return this.firstname; } public voID setLastname(String lastname) { this.lastname = lastname; } public String getLastname() { return this.lastname; } public voID setAge(int age) { this.age = age; } public int getAge() { return this.age; }}
XML:
<?xml version="1.0" enCoding="utf-8"?><layout xmlns:androID="http://schemas.androID.com/apk/res/androID"> <data > <variable name="user" type="com.databinding.model.User" /> </data> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:orIEntation="vertical" androID:padding="@dimen/activity_horizontal_margin"> <EditText androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="@={user.firstname}" /> <EditText androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="@={user.lastname}" /> <EditText androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="@={user.age}" /> </linearLayout></layout>
不幸的是,它给了我错误
“Error:(52, 17) Cannot find the getter for attribute ‘androID:text’
with value type java.lang.Integer on
androID.support.design.Widget.TextinputEditText. “
如果我将属性文本更改为
<EditText androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="@={Integer.toString(user.age)}" />
然后我得到了错误
“Error:cannot generate vIEw binders java.lang.NullPointerException”
感谢任何帮助.
更新:似乎在上面提到的错误之后发生了另一个错误.
cannot generate vIEw binders java.lang.NullPointerException
不知道为什么它给我NPE即使应用还没有开始.
解决方法:
好吧,六个月后,但也许我可以帮助别人.
你可以做这个简单的伎俩:
androID:text="@={`` + mObject.someNumber}"
OBS:您至少需要AndroID Studio 2.3
总结以上是内存溢出为你收集整理的使用Integer类型的Android双向绑定导致数据绑定不存在全部内容,希望文章能够帮你解决使用Integer类型的Android双向绑定导致数据绑定不存在所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)