Я использую Dagger 2.21, и когда я пытаюсь сделать
@Module
internal abstract class FragmentModule {
@ContributesAndroidInjector
internal abstract fun loginFragment() : LoginFragment
}
и
@Singleton
@Component(modules = [AndroidSupportInjectionModule::class, AppModule::class, ActivityModule::class, ViewModelBuilder::class, ViewModelModule::class, RepositoriesModule::class, ApiModule::class, FragmentModule::class])
interface AppComponent : AndroidInjector<PhotocoApplication> {
@Component.Builder
abstract class Builder : AndroidInjector.Builder<PhotocoApplication>()
}
Я получаю эту ошибку:
/app/build/generated/source/kapt/debug/com/photoco/app/injection/module/FragmentModule_LoginFragment$app_debug.java:18: error: incompatible types: Class LoginFragment cannot be converted to Class extends Fragment
Я искал и видел, что использование 2.21 и настройка этого заставляют его работать, но пока не повезло
android.useAndroidX=true ; android.enableJetifier=true
Фрагмент входа расширяется:
dagger.android.support.DaggerFragment()
Со всей этой настройкой я не могу его построить, я что-то здесь упустил? Я могу заставить его работать с действиями, используя DaggerActivity, но не с фрагментами.
PhotocoApplication расширяет dagger.android.support.DaggerApplication
Спасибо!
Исправлена эта проблема путем обновления всех зависимостей кинжала до версии 2.21, отсутствовала поддержка Android (все еще использовалась версия 2.16).
implementation 'com.google.dagger:dagger:2.21'
implementation 'com.google.dagger:dagger-android:2.21'
implementation 'com.google.dagger:dagger-android-support:2.21'
kapt "com.google.dagger:dagger-compiler:2.21"
kapt "com.google.dagger:dagger-android-processor:2.21"
У меня была такая же проблема, но с двумя классами, отличными от Android: EventBus и классом-оболочкой для ресурсов Android.
Я попробовал решение, предложенное Эмануэлем Амигуиньо, даже если оно не имело ничего общего с поддержкой Android, и оно было исправлено. Поэтому я попытался удалить добавленную зависимость и повторить попытку, и волшебным образом снова успешно собрался.
Так что я предполагаю, что в моем случае это была проблема с кэшированием.
Это решило мою проблему. Странно, что Android Studio IDE не подсказала мне обновить зависимости с помощью lint. Спасибо за публикацию этого ответа!