Después de crear un botón de 'registro' en la vista web, quiero navegar directamente a un componente específico cuando hago clic en 'registro de función' en Kotlin.
La lógica de Kotlin está estructurada así.
// Android inner class JavaScriptInterface { @JavascriptInterface @SuppressWarnings("unused") fun register(data: String){ navigate( ridday202208Ev.actionHaydxn2208EventToEventJoinForm() ) } }Este es código javascript.
function register() { } return ( <button onClick={() => register()}></button> )Cuando hace clic en la función de registro en el código Javascript, la vista web reconoce la función de registro y quiere llamar a navegar. No sé cómo lidiar con eso.
Si desea que JS pueda ejecutar el código kotlin, debe llamar a addJavascriptInterface(JavaScriptInterface(), "Native") Eso creará un objeto en JS llamado nativo con todas las funciones que anotó en esa clase. Llamar a uno de ellos llamará directamente a Kotlin o Java. Recuerde que llamaría a Native.register() , no solo a register() (el nombre del objeto es el segundo parámetro de la llamada anterior, cámbielo a lo que quiera).
Recuerde que cualquier función que llame de esta manera solo puede tomar nulo, cadena o número (int, doble, etc.) como parámetros. No puedes pasar objetos. No puede pasar matrices (de alguna manera puede, pero necesita pasar una matriz de Java, momento en el que es más fácil escribir en Java). No puedes pasar funciones. Puede evitar esas limitaciones (excepto las funciones) pasando cadenas JSON y serializándolas o deserializándolas según sea necesario.