Dee*_*haV 7 android 2-way-object-databinding android-databinding annotation-processor android-room
我在现有代码中使用了数据绑定,现在我正在迁移到Room以进行持久化.我已经按照Florina博客中提到的步骤进行了访问
当我删除房间依赖时,我的代码构建正常,没有java代码错误或BR相关错误
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
Run Code Online (Sandbox Code Playgroud)
和它的运行,但给出运行时异常,说database_Impl不存在.因为它无法生成该文件.
但是在我把Annotation处理器放回去后,它给了我
Error:(29, 37) error: cannot find symbol class BR
Run Code Online (Sandbox Code Playgroud)
我使用的gradle插件是 com.android.tools.build:gradle:3.0.1
他们似乎都没有合作
迄今采取的步骤:
有没有人使用Room和Data绑定在一起?
经过4天的努力,我终于使我的代码正常运行.解决问题的步骤
数据绑定错误如 错误:包com.packagename.databinding不存在错误:找不到符号类CustomMainActivityBinding
应用程序gradle必须添加以下代码才能查看默认情况下出现的100多个错误
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xmaxerrs" << "4000"
options.compilerArgs << "-Xmaxwarns" << "4000"
}
}
}
Run Code Online (Sandbox Code Playgroud)
Gradle对数据绑定和Room arch组件的依赖关系
annotationProcessor 'com.android.databinding:compiler:3.0.1'
implementation 'android.arch.lifecycle:extensions:1.0.0'
implementation 'android.arch.persistence.room:runtime:1.0.0'
annotationProcessor 'android.arch.lifecycle:compiler:1.0.0'
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
Run Code Online (Sandbox Code Playgroud)
注意:Gradle插件版本是3.0.1
我更改了所有虚拟机以实现Observable并调用
registry.notifyChange(this, BR.bar);
Run Code Online (Sandbox Code Playgroud)
在通知更改的情况下,还实现重写方法
@Override
public void addOnPropertyChangedCallback(OnPropertyChangedCallback
callback) {
registry.add(callback);
}
@Override
public void removeOnPropertyChangedCallback(
OnPropertyChangedCallback callback) {
registry.remove(callback);
}
Run Code Online (Sandbox Code Playgroud)
这些东西使我的代码构建,但当我解决了Room查询相关的错误时,它运行没有例外.这是主要原因,代码正在构建但没有运行.当我再次重建项目时,我可以看到这些错误.
更新:
在Android Studio 3.1.3之后,Message窗口消失了,现在所有构建错误都出现在Build视图下.虽然有可用于获取textview响应错误的切换,但对于数据绑定错误,这是不够的.
帮助我的解决方案:
我无法在IDE中获得这些错误.
| 归档时间: |
|
| 查看次数: |
3878 次 |
| 最近记录: |