我怎样才能翻译这样的东西:
@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
迁移了一个游乐场项目至hilt
它非常顺利,但我偶然发现了这个用例。我已经更改了代码,因此我不再需要该实例,但好奇心仍然存在。现在我们是否可能不需要这种设置:
@ActivityScope
@ContributesAndroidInjector(modules = [SomeActivityModule::class])
abstract fun someActivity(): SomeActivity
最佳答案
我还没有尝试这个代码,如果它不工作请CMiMW,
根据文档 here ,您可以为应用程序上下文和 Activity 上下文使用预定义的限定符。
您的代码可能如下所示
@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
...
}
关于android - 提供带有 Hilt 的 Activity 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62373838/