[英]How to filed inject a nullable type in an activity with dagger 2 and kotlin
我有一个我想在某些活动中注入的依赖项。 我正在使用dagger.android
并完成所有设置并且项目编译完美
在 AppModule 中:
@Provides
fun provideAppDrawable(application: Application): Drawable? {
return ContextCompat.getDrawable(application, R.drawable.logo)
}
在活动中:
@Inject lateinit var logo: Drawable
现在,当我尝试运行该应用程序时,Dagger 2 会抛出此错误error: [Dagger/Nullable] android.graphics.drawable.Drawable is not nullable
有没有办法解决这个问题? 谢谢
这是关于 kotlin 中的空安全。 从文档:
在 Kotlin 中,类型系统区分了可以为空的引用(可空引用)和不能为空的引用(非空引用)。 例如,String 类型的常规变量不能为 null:
var a: String = "abc" a = null // compilation error
为了允许空值,我们可以将一个变量声明为可空字符串,写成 String?:
var b: String? = "abc" b = null // ok
因此,您必须要么提供Drawable
(不带?),要么将活动中的变量类型更改为Drawable?
(和 ?)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.