【问题标题】:Field Injection via Hilt outside of Fragment and Activity在 Fragment 和 Activity 之外通过 Hilt 进行现场注入
【发布时间】:2021-01-21 05:30:53
【问题描述】:

我想知道是否可以在片段或活动之外使用字段注入?我知道我可以使用构造函数注入,但是我想知道字段注入是否也可以。我认为 Dagger 是可能的。

当我尝试对注入的 yclass 字段执行操作时,我收到此错误

lateinit property yClass has not been initialized

但它是在我创建的模块中初始化的。

根据文档,我需要使用@AndroidEntryPoint 注释来使用字段注入,但在这种情况下我会收到此错误:

@AndroidEntryPoint base class must extend ComponentActivity, (support) Fragment, View, Service, or BroadcastReceiver.

注意:它在活动中正常工作

基本上,我想做这样的事情,

class XClass() {

@Inject
lateinit var yClass: YClass

}

提前致谢,

【问题讨论】:

  • @Halitprkk 你能帮我解决同样的问题吗,实际上我想在我的助手类中访问 Hilt 但没有成功,请帮助我谢谢
  • 嗨@RavindraKushwaha,Mücahid Kambur 的回答实际上应该可以完成这项工作。同样对于那个问题,我没有为我的助手类使用注入。这就是为什么我无法提供帮助????‍♂️
  • 感谢您的输入..我已经为帮助类完成了☺️
  • 太棒了????

标签: android kotlin dependency-injection dagger-hilt


【解决方案1】:

要对自定义类使用字段注入,您需要使用@EntryPoint 注解。欲了解更多信息:

https://developer.android.com/training/dependency-injection/hilt-android#not-supported

或代码实验室:

https://developer.android.com/codelabs/android-hilt#10

【讨论】:

  • 据我了解,在定义入口点时,我仍然需要 appContext 才能获得依赖,有没有办法不用它?
  • 我可以在非活动、非片段类非接口中使用字段注入吗?
  • 文档中的示例有点混乱。它使它看起来像是很多工作。事实上,您只需要一个这样的入口点接口,它可以访问所有可注入的类,您可以在任何地方使用它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多