J'essayais d'implémenter HasActivityInjector dans mon Android mais cela me montre que HasActivityInjector ne peut pas être résolu. Ci-dessous les dépendances et le plugin que j'ai utilisé dans mon projet-
apply plugin: 'kotlin-kapt'
et
implementation 'com.google.dagger:dagger:2.16'
kapt 'com.google.dagger:dagger-compiler:2.16'
Voici le code que j'essaie -
class RanoBoilerplateApplication : Application(), HasActivityInjector{
@Inject
lateinit var activityDispatchingAndroidInjector:
DispatchingAndroidInjector<Activity>
override fun onCreate() {
super.onCreate()
DaggerAppComponent.builder()
.application(this)
.build()
.inject(this)
}
override fun activityInjector(): AndroidInjector<Activity> =
activityDispatchingAndroidInjector
}
Je ne sais pas quelles autres dépendances je dois inclure pour travailler cela, aidez-moi si quelqu'un l'a déjà fait.
Trouvez la dernière version de Dagger 2 ici .
Bon codage :-)
Si quelqu'un vient ici après la mise à jour vers 2.24
, cela a été supprimé: https://github.com/google/dagger/commit/3bd8f707cb28fd0c5f3abb4f87658566f8b52c1 .
Vous pouvez utiliser HasAndroidInjector
à la place.
Il est assez tard pour répondre, mais cela pourrait être utile pour quelqu'un qui est nouveau dans le monde de la dague!
Il a été remplacé par HasAndroidInjector afin d'éviter le passe-partout d'implémentation de plusieurs interfaces Dagger comme HasActivityInjector, HasServiceInjector etc. dans votre classe Application. Maintenant, il vous suffit d'implémenter HasAndroidInjector comme ci-dessous:
class DaggerExampleApplication : Application(), HasAndroidInjector{
@Inject lateinit var androidInjector : DispatchingAndroidInjector<Any>
override fun androidInjector(): AndroidInjector<Any> = androidInjector
override fun onCreate() {
super.onCreate()
//Your code
}
}
Mes dépendances ressemblent à ceci:
//Dagger
implementation "com.google.dagger:dagger:${libs.dagger}"
implementation "com.google.dagger:dagger-Android:${libs.dagger}"
implementation "com.google.dagger:dagger-Android-support:${libs.dagger}"
kapt "com.google.dagger:dagger-compiler:${libs.dagger}"
kapt "com.google.dagger:dagger-Android-processor:${libs.dagger}"
Le support
est nécessaire si vous utilisez appcompat. Et le ${libs.dagger}
fait référence à la version de poignard nécessaire (par exemple 2.16). En savoir plus sur les dépendances ici .
En plus de la réponse de @mbonnin et @ Subhan, à partir de la version 2.24, Has{Activity,Fragment,Service,ContentProvider,BroadcastReceiver}
sont enlevés. Si vous souhaitez toujours prendre en charge cette ancienne implémentation, utilisez la version 2.23 qui prend en charge à la fois HasAndroidInjector
et Has{Activity,Fragment,Service,ContentProvider,BroadcastReceiver}
.
voici à quoi cela devrait ressembler sur la version 2.24
Application
class ExampleApp: Application(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
override fun androidInjector(): AndroidInjector<Any> = androidInjector
/..../
Activité
class ExampleActivity: AppCompatActivity(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
override fun androidInjector(): AndroidInjector<Any> = androidInjector
/..../
Fragment
class MoreFragment: Fragment(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
override fun androidInjector(): AndroidInjector<Any> = androidInjector
/..../
Si vous êtes un Android devloper et utilisez Kotlin (pour un code plus rapide et pour éviter beaucoup de code passe-partout), alors vous pouvez aller avec Koin -
Un framework d'injection de dépendance léger pragmatique pour les développeurs Kotliin. Écrit en Kotlin pur, en utilisant uniquement la résolution fonctionnelle: pas de proxy, pas de génération de code, pas de réflexion.
Croyez-moi, c'est trop facile que poignard2. Vous pouvez trouver plus de détails ici et site officiel .
HasActivityInjector
a été introduit dans le nouveau poignard Android. Incluez les dépendances suivantes dans votre fichier build.gradle.
kapt "com.google.dagger:dagger-Android-processor:2.18"
implementation "com.google.dagger:dagger-Android-support:2.18"