При компиляции моего приложения я получаю следующую ошибку во всех моих сгенерированных классах WhateverFragmentOrActivityBinding:
error: cannot find symbol
protected WhateverFragmentOrActivityBinding(DataBindingComponent _bindingComponent, View _root,
^
symbol: class DataBindingComponent
location: class WhateverFragmentOrActivityBinding
Класс DataBindingComponent не создается.
Взглянув на документацию к DataBindingComponent, мы видим:
If using Dagger 2, the developer should extend this interface and annotate the extended interface as a 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
@Ghimire О, у меня есть. Так много раз.
Вы добавили обработчик аннотаций как kapt, верно? У тебя же apply plugin: 'kotlin-kapt', да?
@EpicPandaForce да
@JasonRidge Вы нашли для этого решение? Я тоже столкнулся с той же проблемой.
У меня сейчас именно эта проблема. Не могли бы вы тогда найти решение? Ответ очень важен!
есть такая же проблема, есть обновления?
У меня была такая же проблема пару дней назад, я использовал разновидности продуктов, и у одного из них (того, над которым я сейчас работал) не было доступа к необходимому классу, это привело к сбою ВСЕХ классов привязки, я был получение нескольких ошибок для каждого класса привязки Activity или Fragment.
Я также использовал Dagger2, и у одного из моих модулей не было доступа к классу (CustomBroadcastReceiver)
@Module
abstract class BroadcasReceiverModule {
@ContributesAndroidInjector
internal abstract fun contributePhoneStateBroadcastReceiver(): CustomBroadcastReceiver
}
эта ошибка никогда не отображалась после процесса сборки, BroadcastReceiverModule был частью моих «основных» ресурсов, но не требовался для того вкуса, над которым я работал, где CustomBroadcastReceiver не существовал
хотя это и не требовалось, он по-прежнему генерировал кучу ошибок, которые исчезли после того, как я удалил BroadcastReceiverModule из «основных» ресурсов и поместил его только на те варианты, которые действительно были необходимы.
Я ненавижу это. На самом деле требуется просто неправильный импорт в класс кинжала, и вы получаете эту ошибку DatabindingComponent. Невозможно отладить в больших проектах.
У меня были такие же сообщения об ошибках.
Затем я обнаружил, что Studio показывал ошибки, когда используется / создается DataBinding, также вывод сборки по умолчанию не показывал более 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.
очистить и перестроить свой проект