添加Room后,数据绑定似乎被破坏了

时间:2017-10-20 13:35:17

标签: android android-gradle android-databinding android-room

添加

compile "android.arch.persistence.room:runtime:1.0.0-rc1"

我的所有数据绑定类都被破坏了。任何线索?

4 个答案:

答案 0 :(得分:13)

事实证明,javac最多会打印100个编译错误,在处理预处理器时,您经常需要上一条错误消息,而不是第一条错误消息。将它放在您的顶级build.gradle文件中并变得高兴:

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xmaxerrs" << "4000"
            options.compilerArgs << "-Xmaxwarns" << "4000"
        }
    }
}

感谢:https://movieos.org/2017/android-room-data-binding-compile-time-errors/

答案 1 :(得分:2)

将会议室实体添加到数据库entities后,出现数据绑定错误。 问题出在实体的吸气器/设置器不正确。如果更改了字段名称,只需重新生成getter / setter。希望会有所帮助。

答案 2 :(得分:0)

我有同样的问题。花了几个小时之后,我终于通过将LiveData<ArrayList<MovieFavEntity>>替换为LiveData<List<MovieFavEntity>>来解决了我的错误。

只需检查返回类型和Dao中不同方法的查询

答案 3 :(得分:0)

正如其他人所述,问题不是与数据绑定类/设置有关,而是与Room批注中的某个错误有关。就我而言,这是DAO类的错误。如果您使用的是Gradle插件的旧版本,则在获取Room编译器错误之前,您会看到所有Data Binding编译器错误,该错误指向您的Room代码中的实际问题。

此问题已在3.4 Android Gradle plugin中进行了修复,因此您现在可以更新到该值(需要Android Studio 3.4或更高版本)。它将在第一次打开项目时提示您更新Android gradle插件:

enter image description here

更多信息(包括打印出所有编译器错误的代码)here