动态使用 AnkoComponent<*>.startActivity()
Dynamic use of 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 types parameters。结果是,如果您想将函数包装在另一个辅助函数中,它必须过于内联并使用具体化的类型参数。更重要的是,它也需要嵌套 functions/lambdas 才能使用内联 - 在 onClick
的情况下是不正确的。
不过我认为您仍然可以像这样 intentFor<T>
实现您的目标:
inline fun <reified T : Activity> Context.buttonGoTo() = UI {
val target = intentFor<T>()
button() {
onClick {
startActivity(target)
}
}
}.view
有没有办法动态调用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 types parameters。结果是,如果您想将函数包装在另一个辅助函数中,它必须过于内联并使用具体化的类型参数。更重要的是,它也需要嵌套 functions/lambdas 才能使用内联 - 在 onClick
的情况下是不正确的。
不过我认为您仍然可以像这样 intentFor<T>
实现您的目标:
inline fun <reified T : Activity> Context.buttonGoTo() = UI {
val target = intentFor<T>()
button() {
onClick {
startActivity(target)
}
}
}.view