Saya memiliki ketergantungan yang ingin saya suntikkan dalam beberapa aktivitas. Saya menggunakan dagger.android dan melakukan semua pengaturan dan proyek mengkompilasi dengan sempurna

Di AppModule:

 @Provides
 fun provideAppDrawable(application: Application): Drawable? {
    return ContextCompat.getDrawable(application, R.drawable.logo)
 }

Dalam kegiatan:

@Inject lateinit var logo: Drawable

Sekarang ketika saya mencoba menjalankan aplikasi, Dagger 2 memunculkan kesalahan ini error: [Dagger/Nullable] android.graphics.drawable.Drawable is not nullable

Adakah cara untuk menyelesaikan masalah ini? Terima kasih

0
Toni Joe 23 Maret 2020, 16:09

1 menjawab

Jawaban Terbaik

Ini tentang Null Safety di kotlin. Dari Dokumentasi:

Di Kotlin, sistem tipe membedakan antara referensi yang dapat menampung null (referensi nullable) dan yang tidak dapat (referensi non-null). Misalnya, variabel reguler tipe String tidak dapat menampung nol:

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

Untuk mengizinkan null, kita dapat mendeklarasikan variabel sebagai string yang dapat dibatalkan, ditulis String?:

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

Jadi, Anda harus menyediakan Drawable (tanpa ?), atau mengubah jenis variabel dalam aktivitas menjadi Drawable? (dengan ?).

1
Garnik 23 Maret 2020, 16:53