Reputation: 1
I'm usign Android Studio 2022.3.1 Patch 2, I'm trying to create my app component, but Dagger does not generate my app component. Here it is the MainApplication.kt
class MainApplication : Application() {
val applicationComponent: ApplicationComponent =
DaggerApplicationComponent.builder().applicationModule(ApplicationModule(this)).build()
@Inject
lateinit var indoor: Indoor
override fun onCreate() {
super.onCreate()
applicationComponent.inject(this)
}
}
And my ApplicationComponent
import dagger.Component
import javax.inject.Singleton
@Singleton
@Component(modules = [ApplicationModule::class])
interface ApplicationComponent {
@ApplicationContext
fun context(): Context
fun application(): Application
fun inject(application: MainApplication)
}
Also in my build.graddle, the dependencies looks like this
//Dagger
implementation("com.google.dagger:dagger:2.48.1")
implementation("com.google.dagger:dagger-android-support:2.48.1")
annotationProcessor("com.google.dagger:dagger-android-processor:2.48.1")
annotationProcessor("com.google.dagger:dagger-compiler:2.48.1")
I tried using
kapt "com.google.dagger:dagger-compiler:2.x.x
But it didnt work
Edit: This is my ApplicationModule code
import dagger.Module
import dagger.Provides import javax.inject.Singleton
@Module class ApplicationModule (private val application: Application) {
@Provides
@ApplicationContext
fun provideContext(): Context = application
@Provides
fun provideApplication(): Application = application
Upvotes: 0
Views: 98
Reputation: 163
Try this for your ApplicationModule
@Module
class ApplicationModule (private val application: Application) {
@Provides
fun provideApplication(): Application = application
}
Double check if Indoor
class has @Inject
annotated constructor:
class Indoor @Inject constructor(...){
...
}
And ApplicationComponent
:
@Singleton
@Component(modules = [ApplicationModule::class])
interface ApplicationComponent {
fun inject(application: MainApplication)
}
ALSO
You can pass Indoor
into object graph by ApplicationModule
@Module
class ApplicationModule (private val application: Application) {
@Provides
fun provideApplication(): Application = application
@Provides
//@Singleton
fun provideIndoor(application: Application) = Indoor(application)
}
Upvotes: 1