Динамическое использование AnkoComponent <*>. StartActivity ()

Есть ли способ вызвать startActivity () динамически?

Цель состояла бы в следующем:

fun <T: Activity> buttonGoTo(): android.widget.Button { return button() { // do stuff onClick {startActivity<T>()} } } 

Заранее спасибо.

Метод startActivity который вы пытаетесь использовать, имеет подпись типа:

inline fun <reified T: Activity> Fragment.startActivity(vararg params: Pair<String, Any>)

Как вы можете видеть, он использует параметры типов reified . Следствием этого является то, что если вы хотите обернуть функцию в другую вспомогательную функцию, она должна быть слишком встроенной и использовать параметры типа reified. Что еще более важно, так это то, что для вложенных функций / lambdas требуется также использовать inlining – что в случае onClick не является истинным.

Однако я думаю, что вы все еще можете достичь своей цели с intentFor<T> например:

 inline fun <reified T : Activity> Context.buttonGoTo() = UI { val target = intentFor<T>() button() { onClick { startActivity(target) } } }.view 
Intereting Posts
Уведомление Android не отображается на API 26 Получить коэффициенты чисел в Котлине Кинжал 2.11 – как заставить Activity и Fragment разделять общие ценности? Google Guava Invokedynamic требует –min-sdk-version> = 26 В чем разница при добавлении частного модификатора к аргументам в конструкторе Kotlin? Как создать сложный класс, который может предложить некоторые классы для расширения в будущем в Котлине? Глобальная функция расширения в котлине Котлинский шаблон для использования Spring Data JPA «запрос по примеру» Надежное измерение распределения JVM Dagger2 не генерирует классы кинжалов Обновление представления Recycler и создание Parcelables для вращения экрана (что здесь лучше всего подходит?) Доступ к значению параметра по умолчанию для функции в Котлине Android. Mockito использует реальные объекты вместо mock Колин Спек Рамки сбой с / Gradle Вызывающая (базовая) делегированная функция при использовании делегирования класса из переопределения