14

I'm using Dagger 2.21 and when I try to do

@Module
internal abstract class FragmentModule {
    @ContributesAndroidInjector
    internal abstract fun loginFragment() : LoginFragment
}

and

@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>()
}

I get this error:

/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

I have been searching and saw that using 2.21 and setting this gets it to work but no luck yet

android.useAndroidX=true ; android.enableJetifier=true

LoginFragment extends:

dagger.android.support.DaggerFragment()

With all this setup can't get it to build, am I missing something here? I can make it work with Activities using DaggerActivity but not with Fragments.

PhotocoApplication extends dagger.android.support.DaggerApplication

Thanks!

2 Answers2

30

Fixed this issue by updating all dagger dependencies to 2.21, was missing android-support (was still using 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"
Kashif K.
  • 88
  • 1
  • 9
  • This solved my issue. Weird that Android Studio IDE didn't hint me to update the dependencies with a lint. Thanks for posting this answer! – Lheonair Nov 13 '20 at 16:30
0

I just had the same problem but with two non-Android classes: EventBus and a wrapper class around Android resources.

I tried the solution proposed by Emanuel Amiguinho even it had nothing to do with android-support and it got fixed. So I tried to remove the added dependency and retry, and magically built successfully again.

So I guess in my case it was some caching issue.

Dharman
  • 30,962
  • 25
  • 85
  • 135
Sergi Mascaró
  • 452
  • 9
  • 13