我在我的 Android 应用程序中使用 Dagger2 进行 DI,使用此代码将类注入(inject)到我的 Activity 中很好:
@field:[Inject ApplicationContext]
lateinit var context: Context
但是,Kotlin 中的原始类型属性(例如 Boolean
)不允许使用 lateinit
修饰符,我该怎么做呢?
@field:[Inject Named("isDemo")]
lateinit var isDemo: Boolean
当我从此代码中删除 lateinit
时,我收到此错误 Dagger 不支持注入(inject)私有(private)字段
最佳答案
首先,您不需要lateinit
,您可以将其保留为var
,并使用任意值进行初始化。
其次,您必须公开一个字段以允许 Dagger 在那里注入(inject)。
所以,这是解决方案:
@JvmField // expose a field
@field:[Inject Named("isDemo")] // leave your annotatios unchanged
var isDemo: Boolean = false // set a default value
关于android - 如何在 Kotlin 中注入(inject)原始变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44717566/