程序包com.***.databinding不存在

databinding好用是好用,但是遇到坑的时候,找问题就不那么方便了,以下是我今天遇到的一个问题,记录一下,可能帮到你。


经过是这样的,昨晚还能正常编译打包,今天整理了一下项目文件,移动了几个文件到另一个包下,我是使用Android Studio移动的文件,所有用到这个文件的地方都会自动修改包名。然而一编译,一大堆如下的错误,一脸懵逼啊。


***.java

Error:(16, 49) 错误: 程序包com.***.databinding不存在
Error:(41, 13) 错误: 找不到符号
符号:   类 ***Binding

位置: 类 ***Activity


这种问题绝大多数情况都是xml有问题,应该首先想到的是使用databinding的xml中某个地方写错了,多数情况的话仔细看看报错日志就能看出来,不多说,然而我的情况是,之前还好好的,没有修改代码也没做什么风骚的操作,突然报出了这么以对错误,使用git diff,对比改动的地方,并没有什么异常,炒鸡郁闷怎么会报这个问题。后来灵光一闪,想到有个文件在xml中有被引用。

一般的databinding的引用对象如下

<data>

    <variable
        name="viewModel"
        type="com.aaa.AAAViewModel" />
</data>

AAAViewModel这个文件在aaa包下,如果你移动了AAAViewModel这个文件到bbb包下,问题就来了,其他引用到这个文件的java类里都会自动将aaa修改到bbb,但是databinding这个地方不会修改,还是保持着com.aaa.AAAViewModel,这个时候它已经标红了,但除非进入这个xml中看,不然你根本发现不了这个问题。所以你只要将它改为

<data>

    <variable
        name="viewModel"
        type="com.bbb.AAAViewModel" />
</data>

就万事大吉了,然而当我发现的时候,几个小时已经过去。。。


所以移动文件的时候一定小心,特别是使用了databinding的xml中,因为目前Android Studio还不能帮你自动把引用文件的包名改为最新的。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值