Data Binding: Cannot find symbol class BR
我尝试在现有项目中使用数据绑定,但是无法构建它。
在项目
1 2 3 4 5 6 7 8 9 10 | dependencies { classpath 'com.android.tools.build:gradle:1.3.1' //Data Binding Beta classpath"com.android.databinding:dataBinder:1.0-rc4" classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7+' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } |
申请
1 2 | apply plugin: 'com.android.databinding' apply plugin: 'com.neenbedankt.android-apt'` |
并在模块中:
1 2 3 4 5 | dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) apt 'com.android.databinding:compiler:1.0-rc1+' } |
我试图对RecyclerView / Fragment / ViewHolder / Adapter使用数据绑定。
我使用的是Android Studio 1.4.1。
使用compileSdkVersion 23和buildToolsVersion" 23.0.1"。
我试过没有适当的,不同的gradle版本,证明读了我的classs / xml。
我还使用Butterknife(因为我的项目太大,无法一次更改所有内容)和其他(但不相关的)库。
我同步并重建了项目,关闭/打开了Android Studio,并尝试使缓存无效。 我从一开始就构建了一个"新"示例,效果很好。
我在"数据类"中的getter方法是@Bindable。
此外,不会创建数据绑定包。 (错误消息说它不存在)和
我在DataBinding方面遇到了与您类似的不同问题,例如Android Studio无法找到生成的Binding类,例如" MainActivityBinding"。重新启动Android Studio为我解决了它。
关于BR类,我遇到了找不到它们的问题,但这通常是因为我在布局类中犯了一个错误。例如,绑定到不存在的字段。确保其他所有内容均正确无误,然后重新启动Android Studio。
在将Android Studio更新到版本2.3和Gradle 3.3之后,出现此错误,对我来说,解决方案是将其添加到build.gradle(app)文件中
1 | apt 'com.android.databinding:compiler:2.3.0' |
我长期以来一直在使用数据绑定,并且提出了一些关键点,它们也可以为您提供帮助。
该答案将帮助您在
6个技巧,不要卡在装订中。
(1)您应该在
1 2 3 4 5 6 7 | android { ... dataBinding { enabled = true } ... } |
(2)现在,如果要生成数据绑定类,则应使用数据绑定(
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.constraint.ConstraintLayout> </layout> |
(3)现在应该生成您的数据绑定类。
If your layout name is in snake case
activity_main.xml then data binding class
will be generated in camel case likeActivityMainBinding .
有时,当您键入
(4)如果仍然没有生成您的类。 (有时,当我们粘贴布局文件时,它会发生)。然后从
(5)如果您在布局中创建了
(6)即使您的班级未生成,您仍应检查布局文件中的错误是否会导致构建失败。数据绑定类将成功生成。
这就是我为解决我的数据绑定错误所做的所有事情。如果您还有其他问题,可以在这里发表评论。
对于AndroidX项目:
迁移到androidx后,我遇到了这个问题,这就是我解决的方法。
- 重建项目时,BR类是根据数据绑定自动生成的。
-
但是,如果错误仍然存??在,请在下面添加以下代码
您的导入然后重建项目。1import androidx.databinding.library.baseAdapters.BR;
尝试将
因此,我的解决方案是检查它:
1 2 3 4 5 6 7 8 | <data> <import type="android.databinding.ObservableArrayList"/> <variable name="dices" type="ObservableArrayList<Dice>" /> //don't forget the '>' after Dice </data> |
有时DataBinding将显示不相关的错误,但在我的情况下,我忘记添加
应用插件:" kotlin-kapt"
在您的Gradle App文件中
就我而言,我已经从基于Android Studio更高版本构建的项目中更新了代码。然后,我将Android Studio从3.3.2升级到3.5.3,并解决了问题。
将您的项目转换为android x,然后从下面的包中导入BR类
导入androidx.databinding.library.baseAdapters.BR
错误实际上可能不是由于数据绑定引起的。 Javac会截断错误日志,因此可能不会显示实际问题。
查看此链接。
https://movieos.org/2017/android-room-data-binding-compile-time-errors/
缺少" BR"导入文件。
在模型类中添加以下导入文件:
1 | import com.yourpackagename.BR; |