Implementando la interfaz Java – Kotlin
Solo comenzando con Kotlin yy he leído la documentation oficial, tengo problemas para implementar una interfaz desde una biblioteca en kotlin.
Aquí está la interfaz en java:
- BottomNavigationView enlace a ViewPager, cuando configuro Listener en bottomNavigationView, tengo que hacer clic dos veces para realizar lo que hago
- ¿Cuál es una forma adecuada de crear una instancia de class a partir de KType?
- ¿Hay algún documento sobre modificadores de acceso en Kotlin?
- Devolver una function recursiva desde otra function de Kotlin
- Android Studio Lint comtesting las funciones de order superior de Kotlin
public interface ResultCallBack { void detailsRetrieved(Obj var1, AnotherInterface var2); void anotherDataRetrieved(int var1, AnotherInterface var2); }
el método que estoy llamando desde kotlin es así:
public static void startLibActivity(Context context, ResultCallBack callback) { sLuhnCallback = callback; context.startActivity(new Intent(context, Library.class)); }
¿Cómo llamo startLibActivity
de kotlin e implemento ResultCallBack
también?
Creo que estoy atascado con esta testing:
Library.startLibActivity(activity, {})
He intentado muchas posibilidades dentro de {}
, todavía tengo problemas con la implementación correcta.
- cuándo utilizar lateinit, init block y el object complementario. Kotlin
- Anotaciones de Kotlin en properties delegadas
- Kotlin koans no funciona? ¿Me estoy volviendo loco?
- Proporcionar methods en Dagger 2
- ¿Cómo puedo convertir InputStream en BufferInputStream en kotlin?
- Encuadernación con vista de Android Kotlin: findViewById vs Butterknife vs Kotlin Android Extension
- ¿Cómo get la reference de class de KParameter en kotlin?
- Copie el map inmutable al map mutable en Kotlin
Como su interfaz java no es una interfaz funcional SAM, no puede usar la expresión lambda {}
en Kotlin directamente.
Puede implementar una interfaz Java en Kotlin, por ejemplo:
class KotlinResultCallBack : ResultCallBack { override fun detailsRetrieved(var1: Obj?, var2: AnotherInterface?) = TODO() override fun anotherDataRetrieved(var1: Int, var2: AnotherInterface?) = TODO() }
Luego puede llamar al método startLibActivity
siguiente manera:
startLibActivity(context, KotlinResultCallBack())
También puede usar una expresión de object para crear una instancia de class anónima que implemente una interfaz Java, por ejemplo:
startLibActivity(context, object : ResultCallBack { override fun detailsRetrieved(var1: Obj?, var2: AnotherInterface?) = TODO() override fun anotherDataRetrieved(var1: Int, var2: AnotherInterface?) = TODO() })
- Error: contiene campo final ilegal -Kotlin
- Casilla de verificación "Incluir soporte de Kotlin" no en Android Studio 3.0 Canary 5