web-dev-qa-db-fra.com

Fournir une instance d'activité avec Hilt

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
5
GuilhE

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.

1
RatneZ