我正在嘗試從 lambda 函式回傳位圖值,但出現錯誤:lateinit property bitmap has not been initialized... 有沒有辦法在回傳位圖之前檢查 ImageRequest 是否完整?
fun getBitmap(context:Context,imageUrl: String) : Bitmap{
lateinit var bitmap: Bitmap
val imageRequest = ImageRequest.Builder(context)
.data(imageUrl)
.target { drawable ->
bitmap = drawable.toBitmap() // This is the bitmap ??
}
.build()
ImageLoader(context).enqueue(imageRequest)
return bitmap
}
uj5u.com熱心網友回復:
嗯……我沒有太多時間解釋。看代碼就明白了。
您必須使用execute()而不是enqueue()。看
private suspend fun getBitmap(context: Context, url: String): Bitmap? {
var bitmap: Bitmap? = null
val request = ImageRequest.Builder(context)
.data(url)
.target(
onStart = {
Log.d(TAG, "Coil loader started.")
},
onSuccess = { result ->
Log.e(TAG, "Coil loader success.")
bitmap = result.toBitmapOrNull() // Or (result as BitmapDrawable).bitmap
},
one rror = {
Log.e(TAG, "Coil loading error")
}
)
.build()
context.imageLoader.execute(request)
return bitmap
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/505837.html
下一篇:多層次的Dockerfile建議
