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

Android使用Intent.putExtras传值后MainActivity接收不到参数问题求助

问题根因定位
  • 核心错误:传参与取参的键名不匹配
    你在传入参数时用的键是"params",接收时用的键是"param1",字符串完全不一致,自然取不到对应值。
  • 潜在问题:如果你的MainActivity配置了singleTop/singleTask/singleInstance等非标准启动模式,且跳转时MainActivity已经在任务栈中存在,系统不会重新创建MainActivity实例,onCreate方法不会触发,只会回调onNewIntent方法,此时getIntent()默认返回的是首次启动时的旧Intent,也会导致取不到新传的参数。
修复方案
  1. 统一键名,优先定义公共常量避免手写错误
// 建议在跳转源类或者MainActivity中定义统一的参数键常量
public static final String EXTRA_PARAMS = "params";

传入参数时使用常量(也可以省略单独创建Bundle的步骤,直接调用Intent原生方法更简洁):

trigger.setOnClickListener( v-> {
    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra(EXTRA_PARAMS, "okay");
    startActivityForResult(intent,0);
});

接收参数时也用同一个常量:

// onCreate中接收
Intent intent = getIntent();
String getData = intent.getStringExtra(EXTRA_PARAMS);
if(getData != null) {
    Log.i(TAG, "face detect message " + getData);
}
  1. 适配单例启动模式场景
    如果MainActivity用了单例启动模式,新增onNewIntent方法处理新参数:
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    // 更新当前Activity持有的Intent为新传入的Intent
    setIntent(intent);
    // 重新执行参数读取逻辑即可
    String getData = getIntent().getStringExtra(EXTRA_PARAMS);
    if(getData != null) {
        Log.i(TAG, "face detect message " + getData);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:24:06