学习MVVM遇到的Error记录

1.duplicate attribute

AS提示主活动xml存在重复属性
解决:发现我在layoutLinearLayout层下都引入了

xmlns:android="http://schemas.android.com/apk/res/android"

删掉LinearLayout下的这句话即可。

在查找解决方法时注意到,这个错误的产生原因还可能是由于:layout设置了weight和height。

解决方法: 删除layout中的weight和height即可。

2.错误: 找不到符号 符号: 类 ActivityMainBindingImpl 位置:

问题来源:对应提示位置下的xml文件,标签variable,和属性绑定的'@{}'中的内容有误。

我的错误是variable里绑定的类是大写User类,但是name=‘user’,然后写了@{User.name},注意引用时要和你variable中的name值一致,写对了的时候你写user.就会有提示让你选择属性。
解决方法: 把@{User.name}改写为@{user.name}。

3.错误: 程序包Model不存在

错误原因:把bean类移动到某包中后,引用这个bean类的xml自动生成的binding会报错。
正常的:
在这里插入图片描述
在这里插入图片描述
出错的:
在这里插入图片描述
学习MVVM遇到的Error记录_第1张图片
对比发现唯一区别就是出错的这边多了一层package。Model是package,它直接用Model.bean类肯定是找不到的,应该是完整路径com.xxx.Model.bean类或者直接bean类才对。直接改这个文件是没用的,这个是系统自动生成的。

解决方法:
把Bean类从包内移动出来就好了,AS真的很气人啊。

4.AS报错:"****/ data binding error ****msg:Only one layout element and one data element"

解决方法:
一个xml文件的标签里只能有一个data标签和一个子layout。当你使用了多个控件或者布局时,需要把它们都放入一个layout里,和ScrollView只能有一个孩子类似,只不过它不但要求仅可以有一个layout,并且仅可以有一个data标签,当然也可以都没有,也是不会在编译时报错的。

5.在MainActivity里怎么都使用不了ActivityMainBinding类

解决方法:
1.检查是否在app的gradle设置了databinding{enable=true}
2.若设置了,则尝试clean,在rebuild一下
3.如果还不可以,看下图,找到对应位置看你有没有生成ActivityMainBindingImpl类,有的话自己手动去个包吧,在MainActivity里import com.xxx.xxx.databinding.ActivityMainBinding.导报成功(不爆红)后,在下面使用的时候AS可能还没有反应,不会在你拼写的时候有补全提示,这时候还需要自己手动输入类名来使用。
学习MVVM遇到的Error记录_第2张图片

你可能感兴趣的:(Android)