gpt4 book ai didi

android - 提供带有 Hilt 的 Activity 实例

转载 作者:行者123 更新时间:2023-12-03 16:11:08 42 4
gpt4 key购买 nike

我怎样才能翻译这样的东西:

@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/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com