Basically, I wanted to test if TheCoffee
was automatically "injected". But I could not find DaggerMyComponent
. I think I must have done something wrong, but what?
Under the MainActivity,
@Component(modules=arrayOf(MyModule::class))
@Singleton
interface MyComponent
{
fun inject(coffee: CoffeeShop)
}
@Module
class MyModule
{
@Provides
@Singleton
@ForApplication
fun provideCoffee():Coffee
{
return Coffee("Bad coffee");
}
}
data class Coffee(var Name:String)
class CoffeeShop
{
@Inject
var TheCoffee:Coffee? = null;
}
@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class ForApplication
build.gradle
apply plugin: 'kotlin-kapt'
...
kapt {
generateStubs = true
}
....
dependencies {
compile 'com.google.dagger:dagger-android:2.13'
kapt 'com.google.dagger:dagger-android-processor:2.13'
compileOnly 'com.google.dagger:dagger:2.13'
kapt 'com.google.dagger:dagger-compiler:2.13'