4
votes

I want to use a bitmap var in a class. It makes 'property getter or setter expected' error. What is the problem? The error shows around 'bmp? : Bitmap = null'. How can I solve the problem?

And I don't understand why I must use getter or setter for private properties in a class.

class MyView(context: Context?) : View(context) {
    private var bmp? : Bitmap = null

    init {
        bmp = BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher)
    }

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        canvas?.drawColor(Color.BLUE)
        canvas?.drawBitmap(bmp,10f,10f, null)
    }
}
2
use lateinit keyword while you init bitmap with null - android
If you want to create nullable Bitmap then use this syntax : private var bmp : Bitmap? = null - Jeel Vankhede
use like this "lateinit var bmp : Bitmap" - Mr.vicky patel

2 Answers

9
votes

Issue is that you're going to create Nullable object using safe call operator, but your syntax is wrong. Inspite of placing ? at variable, you'll need to put it at Reference type.

Check correct syntax :

private var bmp : Bitmap? = null

And then you can access this variable with safe call operator like below :

bmp?.someMethodCall() // This line will never throw you null pointer exception because of ? (Safe call operator)

Check out more here.

3
votes

Please try below line

lateinit var bmp : Bitmap