Kotlin utiliza la interfaz de callback de Java

Tengo un WebView. quiero llamar

public void evaluateJavascript(String script, ValueCallback<String> resultCallback) 

este método.

Aquí está la interfaz ValueCallback:

 public interface ValueCallback<T> { /** * Invoked when the value is available. * @param value The value. */ public void onReceiveValue(T value); }; 

Aquí está mi código de kotlin:

 webView.evaluateJavascript("a", ValueCallback<String> { // cant override function }) 

¿Alguien tiene idea para anular el método onReceiveValue en kotlin? Intenté el "Convertir Java a Kotlin", pero el resultado es el siguiente:

 v.evaluateJavascript("e") { } 

¡Gracias!

La siguiente línea se llama conversión SAM :

 v.evaluateJavascript("e", { value -> // Execute onReceiveValue's code }) 

Siempre que una interfaz Java tenga un único método, Kotlin le permite pasar una lambda en lugar de un object que implemente esa interfaz.

Dado que lambda es el último parámetro de la function evaluateJavascript , puede moverlo fuera de los corchetes, que es lo que hizo la conversión de Java a Kotlin:

 v.evaluateJavascript("e") { value -> // Execute onReceiveValue's code } 

Tú ya lo eres. El contenido entre sus llaves es el contenido de la function onReceive . Kotlin maneja automáticamente las conversiones SAM de Java. Todos los siguientes son equivalentes.

 // Use Kotlin's SAM conversion webView.evaluateJavascript("a") { println(it) // "it" is the implicit argument passed in to this function } // Use Kotlin's SAM conversion with explicit variable name webView.evaluateJavascript("a") { value -> println(value) } // Specify SAM conversion explicitly webView.evalueateJavascript("a", ValueCallback<String>() { println(it) }) // Use an anonymous class webView.evalueateJavascript("a", object : ValueCallback<String>() { override fun onReceiveValue(value: String) { println(value) } }) 
  • String :: toByteArray () no se comstack en Kotlin
  • Pasar un object detector como un parámetro de function en kotlin
  • ¿Cómo usar SQLite en Kotlin / Native?
  • ¿No puede haber una devolución dentro de un Runnable SAM en Kotlin?
  • ¿Conversión de Kotlin SAM con una interfaz Java interna privada?
  • 'x' no es una function al pasar parameters en Kotlin Javascript
  • La inferencia del tipo Java lambda no funciona como se esperaba en Kotlin
  • Acceso a la function de extensión de Kotlin Campo privado de Java
  • Sintaxis de Kotlin para inferir supertipo genérico de subtipo
  • ¿Es posible build una aplicación web completa de Node.js usando Kotlin?
  • ¿Por qué tengo que devolver Unit.INSTANCE al implementar en Java una function Kotlin que devuelve una Unidad?