编译我的应用程序时,我在所有生成的WhateverFragmentOrActivityBinding类上都收到以下错误:
error: cannot find symbol
protected WhateverFragmentOrActivityBinding(DataBindingComponent _bindingComponent, View _root,
^
symbol: class DataBindingComponent
location: class WhateverFragmentOrActivityBinding
似乎没有生成DataBindingComponent
类。
查看DataBindingComponent
的文档,我们看到:
如果使用Dagger 2,开发人员应该扩展此接口和 将扩展接口注释为Component。
我确实使用Dagger 2,所以我怀疑这可能是相关的。我自己试图这样做,无济于事,无法在互联网上找到它。这就是我尝试过的:
@Component(dependencies = [AppComponent::class], modules = [(AppModule::class), (AndroidInjectionModule::class), (ActivityBuilderModule::class)])
interface BindingComponent : DataBindingComponent
但是,从未生成DaggerBindingComponent类,因为找不到我已经拥有的符号错误。这似乎是一个鸡和蛋的问题,所以我不相信这是我的问题的解决方案。
DataBindingComponent似乎负责处理BindingAdapters。我有一些自定义绑定适配器用于绑定ImageView src属性,但即使注释掉这些适配器也无济于事,所以我不确定它们是否相关。
我尝试完全从应用程序中移除Dagger并且问题没有消失。不知道还有什么可以尝试
u_u
答案 0 :(得分:1)
前几天我遇到了同样的问题,我正在使用产品调味料,其中一种(我目前正在开发的调味料)无法访问所需的类,这导致所有绑定类均失败,我在每个Activity或Fragment绑定类上都遇到了多个错误。
我也在使用Dagger2,我的模块之一无法访问类(CustomBroadcastReceiver)
@Module
abstract class BroadcasReceiverModule {
@ContributesAndroidInjector
internal abstract fun contributePhoneStateBroadcastReceiver(): CustomBroadcastReceiver
}
此错误在构建过程之后从未显示过,BroadcastReceiverModule是我的“主要”资源的一部分,但是对于我在CustomBroadcastReceiver不存在的情况下使用的风味而言,则不是必需的
即使不是必需的,在我从“主要”资源中删除BroadcastReceiverModule并将其仅放置在实际需要的样式上之后,它仍然会产生许多错误,并消失
答案 1 :(得分:1)
我有同样的错误消息。
然后我发现使用/构建数据绑定时Studio 正在显示错误,默认情况下,构建输出也不显示超过100行错误,因此:
https://github.com/google/dagger/issues/306
将此添加到build.gradle:
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xmaxerrs" << "500" // or whatever number you want
}
}
然后我发现了实际错误:
https://github.com/google/dagger/issues/1245
https://issuetracker.google.com/issues/115738511
对我来说,解决方案是将Dagger 2.19降级到Dagger 2.16。