Comment puis-je traduire quelque chose comme ça:
@Module
abstract class BaseActivityModule<A : AppCompatActivity> {
@Binds
abstract fun provideActivity(activity: A): AppCompatActivity
companion object {
@Provides
@ActivityContext
fun provideContext(activity: AppCompatActivity): Context = activity
}
}
@Module
abstract class SomeActivityModule : BaseActivityModule<SomeActivity>()
Donc, il peut être utilisé ce dernier comme:
@ActivityScope
class UtilsClass @Inject constructor(
private val activity: AppCompatActivity,
...
){...}
J'ai émigré un projet de terrain de jeu de dagger
à hilt
et il est allé super lisse, mais j'ai trébuché sur ce cas d'utilisation. J'ai changé le code pour que je n'ai pas besoin de cette instance plus, mais la curiosité reste.
Est-ce même possible maintenant que nous n'avons pas besoin de ce type de configuration:
@ActivityScope
@ContributesAndroidInjector(modules = [SomeActivityModule::class])
abstract fun someActivity(): SomeActivity
Oui, nous n'avons pas besoin de ce type de configuration. Nous devons juste fournir @androidentirypoint sur nos activités et la poignée gérera les injections de dépendance à elle seule. Aussi avec la poignée, il n'est pas nécessaire d'écrire des composants d'usine et d'injectoriels.