startActivity() を動的に呼び出す方法はありますか?
目的は、次のようなものを持つことです。
fun <T: Activity> buttonGoTo(): android.widget.Button {
return button() {
// do stuff
onClick {startActivity<T>()}
}
}
前もって感謝します。
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>)
ご覧のとおり、具体化された型パラメーターを使用しています。その結果、関数を別のヘルパー関数でラップしたい場合、インライン化しすぎて、具体化された型パラメーターを使用する必要があります。さらに重要なことは、ネストされた関数/ラムダもインライン化を使用する必要があるということです-これは真実でonClick
はありません。
intentFor<T>
ただし、次のようにして目標を達成できると思います。
inline fun <reified T : Activity> Context.buttonGoTo() = UI {
val target = intentFor<T>()
button() {
onClick {
startActivity(target)
}
}
}.view