La implementación de la interfaz de forma anónima en Kotlin da como resultado el error "no tiene constructores"

Intento usar SurfaceView en Android para sostener una vista previa de la camera. La documentation me dice que necesito llamar a startPreview en la superficie. Callback devuelto para el titular de la superficie. Estoy tratando de establecer la callback como tal

this.surface!!.holder!!.addCallback(SurfaceHolder.Callback() { fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) { } fun surfaceCreated(holder: SurfaceHolder) { } fun surfaceDestroyed(holder: SurfaceHolder) { } }) 

Sin embargo, me sale el error:

SurfaceHolder.Callback no tiene constructores.

Estoy confundido por qué esto no funciona cuando algo como esto hace:

 Thread(Runnable() { fun run() { ... } }) 

Para crear un object de una subclass anónima , debe usar el object: expresión :

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

y no te olvides de usar la palabra key override por método anulado también;)

  • <fragment> label equivalente en anko DSL
  • Cómo pasar una matriz de dos dimensiones como argumento a una function en Kotlin
  • ¿Cómo pasar un parámetro de tipo a una reference genérica de constructor de class?
  • ¿Cómo puedo representar una relación de muchos a muchos con Android Room?
  • Kotlin: generics y varianza
  • Cómo volver a vincular al service de reproductor de música bind ya en ejecución
  • @DataJpaTest y @Async El método CRUDRepository no funciona en set
  • PubNub suscribe Android Kotlin
  • Android WebView salta a la cima en cada actualización de página (?)
  • Las testings de JUnit en Android Studio con Kotlin dejaron de funcionar
  • Kotlin anonim class implementar interfaz