需要属性的 getter 或 setter

4

我想在一个类中使用位图变量,但是会出现“需要属性的getter或setter”错误。问题出现在'bmp? : Bitmap = null'的周围。 我该如何解决这个问题?

而且我不明白为什么我必须在类中使用getter或setter来访问私有属性。

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)
    }
}

1
在使用 null 初始化 bitmap 时,请使用 lateinit 关键字。 - android
如果您想创建可空位图,请使用以下语法:private var bmp : Bitmap? = null - Jeel Vankhede
延迟初始化变量 bmp:位图 - Mr.vicky patel
2个回答

9
问题在于你要使用安全调用运算符创建一个可空对象,但是你的语法是错误的。尽管你把?放在变量上,但你需要将其放在引用类型上。
请检查正确的语法:
private var bmp : Bitmap? = null

然后你可以使用安全调用运算符访问此变量,如下所示:

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

在此处查看更多相关内容


3

请尝试下面这行代码

lateinit var bmp : Bitmap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接