Die startActivity
Methode Sie zu verwenden sind versucht hat eine Signatur wie:
inline fun <reified T: Activity> Fragment.startActivity(vararg params: Pair<String, Any>)
Wie Sie es verwendet reified types parameters sehen können. Die Konsequenz ist, dass, wenn Sie die Funktion in eine andere Hilfsfunktion einbinden wollen, sie zu inlined sein muss und verifizierte Typparameter verwenden soll. Was noch wichtiger ist, ist, dass es verschachtelte Funktionen/Lambdas benötigt, um Inlining zu verwenden - was im Fall von onClick
nicht zutrifft.
Aber ich denke, Sie noch Ihr Ziel mit intentFor<T>
wie so erreichen kann:
inline fun <reified T : Activity> Context.buttonGoTo() = UI {
val target = intentFor<T>()
button() {
onClick {
startActivity(target)
}
}
}.view
Sie neue Aktivität durch ein neues 'Intent' Objekt starten können. Überprüfen Sie die Android-Dokumente. – spirit