繁体   English   中英

如何使用 dagger 2 和 kotlin 在活动中注入可空类型

[英]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.

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