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

Kotlin Android开发中从Fragment启动Activity时Intent、finish()报错如何解决

问题修复方案

编译错误修复

1. Intent构造报错修复

Intent实例化的第一个参数要求传入Context类型对象,Fragment本身不属于Context子类,直接传this不符合参数要求。调用Fragment的requireContext()方法获取其附着的宿主上下文即可解决。

2. finish()方法报错修复

finish()是Activity专属方法,Fragment本身没有该方法。如果跳转后不需要保留宿主MainActivity,可调用requireActivity().finish()触发宿主销毁;正常场景下用户答完题返回需要回到科目列表页,直接删除finish()相关代码即可。

修复后的sendIntent函数代码

private fun sendIntent(passedVariable: Int) {
    val intent = Intent(requireContext(), SubjectPage::class.java)
    intent.putExtra("subject", passedVariable)
    startActivity(intent)
    // 如不需要关闭宿主页面可删除下行代码
    // requireActivity().finish()
}

隐藏运行异常修复

你当前的点击事件绑定存在逻辑错误:地理科目tvGeography的点击事件错误绑定到了英语科目的控件subjectOne上,会导致英语点击事件被覆盖、地理点击无响应,修正代码如下:

val subjectOne = binding.tvEnglish
subjectOne.setOnClickListener {
    sendIntent(0)
}

val subjectTwo = binding.tvGeography
// 原代码此处错写为subjectOne.setOnClickListener,已修正
subjectTwo.setOnClickListener {
    sendIntent(1)
}
val subjectThree = binding.tvHistory
subjectThree.setOnClickListener{
    sendIntent(2)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:18:02