Je utilise Dagger pour l'injection de dépendances en Kotlin. Maintenant, voici les classes nécessaires
ModuleActivité
@Module class ModuleActivité (val activité : Activité){
@Provides
@ContexteActivité
fun fournirContexte() : Contexte{
return activité
}
}
ComposantActivité
@ParActivité
@Component(dependencies = arrayOf(ComposantApplication::class), modules = arrayOf(ModuleActivité::class))
interface ComposantActivité {
fun injecter(activité: ActivitéPrincipale)
}
ActivitéPrincipale
@Inject @ContexteActivité lateinit var contexte:Contexte
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
DaggerComposantActivité.builder()
.applicationComponent(AppliPrincipale.getInstance().getComposantApplication()).moduleActivité(ModuleActivité(this)).build()
.injecter(this);
Maintenant, je reçois l'erreur suivante
erreur: android.content.Contexte ne peut pas être fourni sans une méthode annotée @Provides ou @Produces.
e:
e: public abstract void injecter(@org.jetbrains.annotations.NotNull()
e: ^
e: android.content.Contexte est injecté à
e: app.feed.com.ui.ActivitéPrincipale.contexte
e: app.feed.com.ui.ActivitéPrincipale est injecté à
e: app.feed.com.injection.component.ComposantActivité.injecter(p0)
Je utilise le même code en Java et ca fonctionne bien mais ici en Kotlin, cela donne l'erreur, aussi les dépendances de ComposantApplication
fonctionnent bien. En attendant, je utilise les versions suivantes de gradle et 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"
}
}
Veuillez m'aider à comprendre ce que je fais mal