首页 > 解决方案 > 使用 Hilt 注入 Activity

问题描述

如何在扩展 Activity 而不是 AppCompatActivity 的类中注入改造实例?这是模块:

@InstallIn(SingletonComponent::class)
object Module {
    private const val BASE_URL = "API_URL_HERE"

    @Singleton
    @Provides
    fun provideRetrofitApi(): Api {
        return Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
            .create(Api::class.java)
    }
}

这是我的主要活动:

@AndroidEntryPoint
class MainActivity : Activity() {
    ...
    @Inject
    lateinit var api: Api
    ...

这导致

使用@AndroidEntryPoint 注解的Activity 必须是androidx.activity.ComponentActivity 的子类。(例如 FragmentActivity、AppCompatActivity 等) [Hilt] 处理未完成。有关详细信息,请参阅上面的错误。

我尝试使用@ActivityScoped而不是@AndroidEntryPoint但它导致

kotlin.UninitializedPropertyAccessException:lateinit 属性 api 尚未初始化。

标签: androidkotlinretrofit2wear-osdagger-hilt

解决方案


推荐阅读