温馨提示:本文翻译自stackoverflow.com,查看原文请点击:android - How to inject primitive variables in Kotlin?
android dagger-2 kotlin dependency-injection kotlin-lateinit

android - 如何在Kotlin中注入原始变量?

发布于 2020-03-31 23:24:01

我在Android应用程序中使用Dagger2 for DI,并使用以下代码将类注入到Activity中很好:

@field:[Inject ApplicationContext]
lateinit var context: Context

但是,lateinitKotlin中的原始类型属性(例如Boolean上不允许使用修饰符,我该怎么做?

@field:[Inject Named("isDemo")]
lateinit var isDemo: Boolean

当我lateinit从这段代码中删除时,我得到这个错误Dagger does not support injection into private fields

查看更多

提问者
Mohsen Mirhoseini
被浏览
21
Miha_x64 2017-06-23 20:22

首先,您不需要lateinit,可以将其保留为var,并使用任意值进行初始化。其次,您必须公开一个字段,以允许Dagger注入该字段。所以,这是解决方案:

@JvmField // expose a field
@field:[Inject Named("isDemo")] // leave your annotatios unchanged
var isDemo: Boolean = false // set a default value