mvvm的dataBinding无法自动生成binding类的解决办法
发布网友
发布时间:2023-01-05 12:49
我来回答
共1个回答
热心网友
时间:2023-10-15 22:58
https://blog.csdn.net/huangxin388/article/details/77425678
1、
保证修改gradle的位置正确,在android标签下。
2、
3、
修改完成后别忘记点右上角Sync Now。
4、
我们在xml中添加标签的时候习惯性的第一个字母大写,其实添加的layout标签是<layout></layout>小写的
6、
binding类是根据xml布局文件的名字生成的
activity_main.xml->ActivityMainBinding
activity_item.xml->ActivityItemBinding
splash_test.xml->SplashTestBinding
依此类推
如果你的布局文件名字和书上不一致,生成的binding类自然不一样,因此不要盲目使用书上的binding类,找不到的。
7、
如果还没有出现binding类只好放大招了,重启AS,然后将项目运行一下(只修改gradle文件和xml文件后是不会出现错误的)。待gradle重新构建应该就会出现了
8、
Build->make project
9、
同一个ViewModel类,在不同的xml文件中被多次使用
更改name的值为viewModel1
<data>
<import type="android.view.View" />
<variable
name="viewModel1"
type="main.com.pwj.mvvmtest.weather.viewmode.QueryWeatherViewModel" />
</data>
10、重启*有时候确实管用。。。
我是通过第8和9的方法解决了,主要原因是多个xml使用了ViewModel
具体问题具体分析。肯定跑不出这个10中原因
网友典型问题:
A:
维护项目,要新增页面,因为之前没用过,所以直接复制了其他页面的布局文件修改。发现找不到Binding类,一直没给我生成。后面删除布局文件的时候生成了。。估计是必须要重新创建才会生成。也许和AS及databinding版本有关。
B:
如果Build.gradle和Layout文件配置正确,仍无法生成ViewDataBinding类。
经测试,Gradle的sync无效,clean project无效,invalidate and restart无效,但是Build->Rebuild Project生效了。
还不行的话,使用ViewDataBinding抽象类的setVariable方法,也可以生效。
AS版本:3.1.3
gradle版本:3.1.3