Как подать впрыснуть обнуляемый тип в действие с кинжалом 2 и kotlin - PullRequest
0 голосов
/ 23 марта 2020

У меня есть эта зависимость, которую я хочу внедрить в какую-то деятельность. Я использую 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

Есть ли способ исправить эту проблему? Спасибо

1 Ответ

1 голос
/ 23 марта 2020

Это примерно Нулевая безопасность в kotlin. Из Документация :

В Kotlin система типов различает ссылки, которые могут содержать нуль (пустые ссылки), и ссылки, которые не могут (ненулевые ссылки). Например, обычная переменная типа String не может содержать нуль:

var a: String = "abc"
a = null // compilation error

Чтобы разрешить нули, мы можем объявить переменную как обнуляемую строку, написанную String?:

var b: String? = "abc"
b = null // ok

Итак, вы должны либо указать Drawable (без?), Либо изменить тип переменной в действии на Drawable? (с?).

...