繁体   English   中英

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

[英]How to inject primitive variables in Kotlin?

我在我的 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

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

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

接受的答案对我不起作用,但以下效果很好:

@set:[Inject Named("isDemo")]
var isDemo: Boolean = false

来源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM