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

Kotlin中从Intent获取数据时出现Null值问题

故障原因

你的代码存在两处核心逻辑错误,导致参数传递失败:

  • 你构造了两个独立的Intent实例:声明的i变量、launcher?.launch()方法内直接新建的Intent(this, MainActivity::class.java),你给i添加的Extra参数不会同步到launcher启动的那个Intent中
  • 你先执行了启动Activity的操作,之后才给i设置Extra参数,同时还额外调用了一次startActivity(i),等于连续启动了两个MainActivity实例,最先显示的是launcher启动的无参数实例,所以你读取到的Intent值为Null

修复方案

修正FirstActivity逻辑

如果你使用Activity Result API(即代码中的launcher),统一使用同一个Intent实例,先设置参数再启动,删除冗余的启动代码:

// 构造唯一的Intent实例
val i = Intent(this, MainActivity::class.java)
// 先设置传递参数
i.putExtra("key", cold)
// 用launcher启动该带参数的Intent
launcher?.launch(i)
// 删除原代码中多余的 startActivity(i) 调用,避免重复启动Activity

额外校验规则

  • 确认你传递的cold变量是String类型:如果传递的是Boolean、Int等其他类型,接收时需要调用对应的getBooleanExtra("key", 默认值)、getIntExtra("key", 默认值)等方法,不能用getStringExtra
  • 如果你是在MainActivity已存活的场景下接收新跳转的参数,需要在onNewIntent回调中主动更新intent = newIntent,否则读取的还是Activity首次启动时的旧Intent值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:36:03