Dagger 2 androidx фрагмент несовместимых типов

Я использую 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

Спасибо!

14
0
2 956
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Исправлена ​​эта проблема путем обновления всех зависимостей кинжала до версии 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 Studio IDE не подсказала мне обновить зависимости с помощью lint. Спасибо за публикацию этого ответа!

Lheonair 13.11.2020 17:30

У меня была такая же проблема, но с двумя классами, отличными от Android: EventBus и классом-оболочкой для ресурсов Android.

Я попробовал решение, предложенное Эмануэлем Амигуиньо, даже если оно не имело ничего общего с поддержкой Android, и оно было исправлено. Поэтому я попытался удалить добавленную зависимость и повторить попытку, и волшебным образом снова успешно собрался.

Так что я предполагаю, что в моем случае это была проблема с кэшированием.

Другие вопросы по теме