Android 无法将Drawable添加到Drawable的ArrayList中-类型不匹配

Android 无法将Drawable添加到Drawable的ArrayList中-类型不匹配,android,kotlin,Android,Kotlin,我正在为这样一个回收站建立一个可提取物品的列表- private val draw:ArrayList=ArrayList draw.addResourcesCompat.getDrawableresources,R.drawable.one,null 但是对于第二行,我得到了一个类型不匹配错误- 必需:可拉伸 发现:可绘制 导入为import android.graphics.drawable.drawable 我不知道出了什么问题。使用 draw.add(ResourcesCompat.ge

我正在为这样一个回收站建立一个可提取物品的列表-

private val draw:ArrayList=ArrayList

draw.addResourcesCompat.getDrawableresources,R.drawable.one,null

但是对于第二行,我得到了一个类型不匹配错误-

必需:可拉伸 发现:可绘制

导入为import android.graphics.drawable.drawable

我不知道出了什么问题。

使用

draw.add(ResourcesCompat.getDrawable(resources, R.drawable.one, null)!!)
而不是

draw.add(ResourcesCompat.getDrawable(resources, R.drawable.one, null))
ResourcesCompat.getDrawableresources,R.drawable.one,null是否可以返回drawable?->这意味着它也可以为null。现在您的ArrayList不允许空值,因此您可以做的是检查drawable是否不为空,然后将其添加到列表中,例如:

val drawable = ResourcesCompat.getDrawable(resources, R.drawable.one, null)
drawable?.let { draw.add(it) }
使用!!如果值为null,则抛出NPE,因此您必须捕获它并返回?。操作员安全地检查该值是否不为null。如果可以拉的话,就像一个较短的!=空条件

还有第三个选项,您可以使用elvis运算符在发现null时提供默认的可绘制

val drawable = ResourcesCompat.getDrawable(resources, R.drawable.one, null)
val defaultDrawable = ...
draw.add(drawable ?: defaultDrawable)

这起作用了。是什么!!for?它声明该值不可为空。别忘了接受并投票表决答案