【问题标题】:Kotlin creating Bitmap must not be nullKotlin 创建 Bitmap 不能为空
【发布时间】:2020-10-17 13:06:02
【问题描述】:
lateinit var bitmap: Bitmap

onCreate{
 bitmap = BitmapFactory.decodeResource(applicationContext.resources, Color.TRANSPARENT) 
 }

我正在尝试创建一个像上面一样的透明位图。但是,它给了我这个错误。

Caused by: java.lang.IllegalStateException: BitmapFactory.decodeReso…urces, Color.TRANSPARENT) must not be null

我做错了什么?

【问题讨论】:

  • 您将bitmap 声明为Bitmap 而不是Bitmap?decodeResource() 可以返回 null,当这种情况发生时你需要能够优雅地处理。

标签: android android-studio kotlin


【解决方案1】:

正如@commonWare 所提到的,要么声明bitmap 可以为空:

var bitmap: Bitmap?

或者当你调用decodeResource时处理null

bitmap = BitmapFactory.decodeResource(applicationContext.resources, Color.TRANSPARENT) ?: DEFAULT_BITMAP

其中DEFAULT_BITMAP 是您之前创建的默认位图。

如果您可以控制decodeResource 方法,则更好的是,使返回类型不可为空并返回一些默认值而不是null

fun decodeResource(...): Bitmap {
   .....
   return bitmap ?: DEFAULT_BITMAP // return a default value instead of returning null
}

【讨论】:

  • 'lateinit' 修饰符不允许用于可空类型的属性。那么位图?无法写入。
猜你喜欢
  • 1970-01-01
  • 2018-05-04
  • 2022-01-19
  • 1970-01-01
  • 2020-06-16
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多