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

  • Kotlin maven plugin order de compilation
  • Datos de caching de request HTTP en RxJava
  • Usando RxJava para get un resultado distinto con Realm y Retrofit
  • Cómo filtrar una list en el lugar con Kotlin?
  • Configuración de networking de Android
  • ¿Cómo usar Anko DSL dentro de un Fragmento?
  • Implementando la búsqueda que empuja los resultados a la list tan pronto como estén disponibles usando rxJava
  • ¿Cómo selecciono qué sobrecarga de Java sobrescribir en una class derivada de Kotlin?
  • Copia de class de datos de Kotlin con valor de var cambiado
  • Kotlin Kapt: java.lang.IllegalStateException: endPosTable ya está configurado
  • ¿Cómo corotines de Kotlin son mejores que RxKotlin?