You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何将Activity传递给函数?跳转工具函数参数定义疑问

Kotlin中封装Activity跳转函数的正确参数定义

你不需要传递Activity的实例,而是要传递目标Activity的Class类型——因为Intent跳转只需要获取目标类的Class对象,手动创建Activity实例(比如MenuActivity())是错误的,Activity实例必须由Android系统管理,手动实例化会破坏组件生命周期,引发异常。

方式一:直接传递Class对象

这是最直观的写法,函数参数定义为Class<out Activity>,可以接收任意Activity子类的Class对象:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    // 调用时传入目标Activity的Class对象
    replaceActivity(MenuActivity::class.java)
}

// 正确的函数参数定义
private fun replaceActivity(targetActivity: Class<out Activity>) {
    val intent = Intent(this, targetActivity)
    startActivity(intent)
}

方式二:使用Kotlin具体化泛型(更简洁)

借助Kotlin的内联函数和具体化泛型,可以让调用代码更简洁,无需手动写::class.java:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    // 调用时直接指定泛型类型
    replaceActivity<MenuActivity>()
}

// 内联函数+具体化泛型
private inline fun <reified T : Activity> replaceActivity() {
    val intent = Intent(this, T::class.java)
    startActivity(intent)
}

内容的提问来源于stack exchange,提问作者Dua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:36:15