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

我在我的Android应用程序中使用Dagger2作为DI,并使用此代码注入类到我的活动罚款:

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

但是,在Kotlin的基本类型属性(例如Boolean )中不允许使用lateinit修饰符,我该如何做这样的事情?

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

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

首先,你不需要lateinit ,你可以把它作为一个var ,并用任意值初始化。 其次,你必须暴露一个领域,以便让匕首在那里注入。 所以,这里的解决方案:

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