我在我的Android应用程序中使用Dagger2进行DI,并使用此代码将类注入我的Activity中:
@field:[Inject ApplicationContext]
lateinit var context: Context
但是,Kotlin中的基本类型属性不允许使用lateinit
修饰符(例如Boolean
),我该怎样做?
@field:[Inject Named("isDemo")]
lateinit var isDemo: Boolean
当我从此代码中删除lateinit
时,我收到此错误Dagger does not support injection into private fields
答案 0 :(得分:20)
首先,您不需要lateinit
,您可以将其保留为var
,并使用任意值进行初始化。
其次,你必须暴露一个字段才能让Dagger注入其中。
所以,这是解决方案:
@JvmField // expose a field
@field:[Inject Named("isDemo")] // leave your annotatios unchanged
var isDemo: Boolean = false // set a default value
答案 1 :(得分:3)