我该如何翻译这样的内容:
@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>()
所以可以像下面这样使用后者:
@ActivityScope
class UtilsClass @Inject constructor(
private val activity: AppCompatActivity,
...
){...}
我已经迁移了一个游乐场项目dagger
to hilt
一切都非常顺利,但我偶然发现了这个用例。我已经更改了代码,因此我不再需要该实例,但好奇心仍然存在。
现在我们是否可能不需要这种设置:
@ActivityScope
@ContributesAndroidInjector(modules = [SomeActivityModule::class])
abstract fun someActivity(): SomeActivity
我还没有尝试过这个代码,如果它不起作用,请 CMiMW,
根据文件here https://developer.android.com/training/dependency-injection/hilt-android#predefined-qualifiers,您可以使用应用程序上下文和活动上下文的预定义限定符。
你的代码可能看起来像这样
@ActivityScoped
class UtilsClass @Inject constructor(
@ActivityContext private val activity: Context,
...
){
...
val myActivity = if(context is MyActivity) context as MyActivity else throw ...... // check if its provided context was desired activity
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)