我正在尝试为 Context 编写一个 kotlin 扩展函数,它将在具有给定类名和 Intent 附加列表的 android 中启动一个新 Activity 。我能够在没有任何额外内容的情况下成功开始 Activity ,但我遇到了问题。
fun <T> Context.openActivity(it: Class<T>, pairs: List<Pair<String, Any>>) {
var intent = Intent()
pairs.forEach {
intent.putExtra(it.first, it.second)
}
startActivity(intent)
}
Main issue here is -> intent.putExtra() doesn't except second param as Any
最佳答案
考虑使用 Bundle
,而不是使用对列表.然后你可以用 putExtras(Bundle)
添加它.
如果您想提前一步,您可以添加一个 lambda 扩展来配置附加功能:
fun <T> Context.openActivity(it: Class<T>, extras: Bundle.() -> Unit = {}) {
val intent = Intent(this, it)
intent.putExtras(Bundle().apply(extras))
startActivity(intent)
}
然后您可以将其称为:
openActivity(MyActivity::class.java) {
putString("string.key", "string.value")
putInt("string.key", 43)
...
}
关于android - Kotlin 扩展功能使用 Intent 附加功能启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53803667/