android - 使用 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 尚未初始化。
解决方案
推荐阅读
- javascript - 如何在没有按钮的情况下控制 React-Bootstrap Dropdown 的可见性?
- c++ - 将通用引用转换为可调用的 void 指针,反之亦然
- sql - 使用局部变量时选项重新编译更快
- google-data-studio - Google Data Studio:不要在时间序列图表中显示空值
- spring - 我可以将@ConditionalProperty 与我的自定义注释一起使用以避免重复配置吗?
- javascript - 等待反应和反应角色
- google-kubernetes-engine - 如何在 GKE 上将 opa 部署为 side car 后找到 OPA url
- javascript - 在 React Native 中使用返回无法访问的代码
- ruby-on-rails - 为包含的方法调用 super 会导致“无超类方法”错误 - ActiveSupport
- python - WebScraping w/ Beautiful Soup:如何返回列表中的空元素?