I am using Dagger for dependency injection in Kotlin. Now here are the necessary classes
ActivityModule
@Module class ActivityModule (val activity : Activity){
@Provides
@ActivityContext
fun provideContext() : Context{
return activity
}
}
ActivityComponent
@PerActivity
@Component(dependencies = arrayOf(ApplicationComponent::class), modules = arrayOf(ActivityModule::class))
interface ActivityComponent {
fun inject(activity: MainActivity)
}
MainActivity
@Inject @ActivityContext lateinit var context:Context
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
DaggerActivityComponent.builder()
.applicationComponent(MainApplication.getInstance().getApplicationComponent()).activityModule(ActivityModule(this)).build()
.inject(this);
Now I am getting the following error
error: android.content.Context cannot be provided without an @Provides- or @Produces-annotated method.
e:
e: public abstract void inject(@org.jetbrains.annotations.NotNull()
e: ^
e: android.content.Context is injected at
e: app.feed.com.ui.MainActivity.context
e: app.feed.com.ui.MainActivity is injected at
e: app.feed.com.injection.component.ActivityComponent.inject(p0)
I am using the same code in java and its working fine but here in kotlin its giving the error, also ApplicaionComponent
dependencies are working fine. Meanwhile i am using the following versions of gradle and kotlin
buildscript {
ext.kotlin_version = '1.1.2-3'
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Kindly help me to figure out what am I doing wrong