1

有没有办法动态调用 startActivity() ?

目的是具有以下内容:

fun <T: Activity> buttonGoTo(): android.widget.Button {

    return button() {
        // do stuff
        onClick {startActivity<T>()}
    }
}

提前致谢。

4

1 回答 1

1

startActivity您尝试使用的方法具有如下签名:

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

如您所见,它使用具体类型参数。结果是,如果您想将函数包装在另一个辅助函数中,则必须内联过多并使用具体类型参数。更重要的是,它也需要嵌套函数/lambdas 才能使用内联——在这种情况下onClick是不正确的。

但是我认为您仍然可以通过以下方式实现目标intentFor<T>

inline fun <reified T : Activity> Context.buttonGoTo() = UI {
    val target = intentFor<T>()
    button() {
        onClick {
            startActivity(target)
        }
    }
}.view
于 2016-07-25T06:42:27.953 回答