Moh*_*ini 10 android dependency-injection kotlin dagger-2 kotlin-lateinit
我在我的Android应用程序中使用Dagger2 for DI,并使用此代码将类注入我的Activity中:
@field:[Inject ApplicationContext]
lateinit var context: Context
Run Code Online (Sandbox Code Playgroud)
但是,lateinitKotlin中的原始类型属性不允许使用修饰符(例如Boolean),我该怎么做呢?
@field:[Inject Named("isDemo")]
lateinit var isDemo: Boolean
Run Code Online (Sandbox Code Playgroud)
当我lateinit从这段代码中删除时,我收到此错误Dagger does not support injection into private fields
Mih*_*x64 25
首先,您不需要lateinit,可以将其保留为a var,并使用任意值进行初始化.其次,你必须暴露一个字段才能让Dagger注入其中.所以,这是解决方案:
@JvmField // expose a field
@field:[Inject Named("isDemo")] // leave your annotatios unchanged
var isDemo: Boolean = false // set a default value
Run Code Online (Sandbox Code Playgroud)
接受的答案对我不起作用,但以下效果很好:
@set:[Inject Named("isDemo")]
var isDemo: Boolean = false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2081 次 |
| 最近记录: |