android使用DataBinding踩坑记录
---error: duplicate attribute.
估计很多人遇到后都不知道怎么办,但一直提示layout文件有问题,所以就尝试将跟布局的width和height属性去掉,然后就没有这个问题了
---有ViewPager的界面必须为ViewPager设置一个id
在没有使用DataBinding的时候,通常都会为ViewPager设置一个id.有一次在使用的时候结合DataBinding,所以就没有设置id,所以就抛出必须设置id异常.
---找不到BR类
在使用DataBinding的时候,偶尔需要用到BR类,然而有时要用的时候总会找不到.
这个时候各种clean,rebuild都没用,检查layout文件的代码也没发现问题.在生成的DataBinding类里面把BR类复制出来编译不会报错,运行的时候发现报错了.所以最后想到了用反射根治这个问题,虽然这种方式并不方便,但也算是解决了这个问题.
public static int getBrField(String fieldName){
int fieldId = 0;
try{
Class brClass = Class.forName(MyApplication.getInstance().getPackageName() + ".BR");
Object brObject = brClass.newInstance();
fieldId = (int)(brClass.getField(fieldName).get(brObject));
}catch(Exception e){
e.printStackTrace();
}
return fieldId;
}
注意: 使用了反射之后有开启代码混淆的话必须在混淆规则忽略混淆
-keep class 你的包名.BR { *;}
---没办法使用&&符号的问题
相信有些人可能遇到这个问题,其实不知没办法在@{}里面使用 & 符号,在双引号里面也没办法使用.我一开始也没反应过来,后来
android:text="&" 这里试了一下才想起来这里要用转义,遇到这个问题的人估计很少在layout文件里面写 & 符号,所以一时半会没反应过来.还有,<> 这2个符合也需要使用转义.
常用转义表