在Kotlin中匿名实现接口导致“没有构造函数”错误
我想在Android中使用SurfaceView来保存Camera预览。 文档告诉我,我需要调用表面保持器的surfaceCreated回调startPreview。 我试图设置回调像这样
this.surface!!.holder!!.addCallback(SurfaceHolder.Callback() { fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) { } fun surfaceCreated(holder: SurfaceHolder) { } fun surfaceDestroyed(holder: SurfaceHolder) { } })
但是,我得到的错误:
SurfaceHolder.Callback没有构造函数。
我很困惑,为什么这样做不起作用,当这样做:
Thread(Runnable() { fun run() { ... } })
要创建一个匿名子类的对象,你需要使用这个object:
expression :
this.surface!!.holder!!.addCallback(object: SurfaceHolder.Callback { override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) { ... } override fun surfaceCreated(holder: SurfaceHolder) { ... } override fun surfaceDestroyed(holder: SurfaceHolder) { ... } })
并且不要忘记每个重写的方法也使用override
关键字;)