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

Android多Activity整数数据传递异常:返回默认值或应用崩溃

解决Activity间传递整数数据的问题

我来帮你排查这两个问题,一步步拆解解决:

一、putExtra返回默认值的问题

你遇到的getIntExtra总是返回默认值3,大概率是这几个常见原因:

  • 没有正确启动Intent:你是不是写完go_to_main.putExtra("data", i1)之后,忘记调用startActivity(go_to_main)了?如果没启动,第二个Activity根本接收不到数据,自然会返回默认值。
  • i1变量未正确赋值:先确认一下i1的值是不是真的被设置了,比如在putExtra之前加个Log打印Log.d("TAG", "i1的值是:" + i1),看看是不是你预期的整数。
  • 上下文使用问题:把getBaseContext()换成当前Activity的this试试,比如new Intent(FirstActivity.this, MainActivity.class),有时候用getBaseContext可能会导致Intent上下文不对。
  • key拼写错误:检查两个Activity里的key是不是完全一致,都是"data",大小写、拼写都不能错,否则会找不到对应的数据。

修正后的第一个Activity代码示例:

// 假设当前是FirstActivity
Intent go_to_main = new Intent(FirstActivity.this, MainActivity.class);
go_to_main.putExtra("data", i1); // 确保i1已经被正确赋值
startActivity(go_to_main); // 一定要启动Intent!

第二个Activity代码:

Intent intent = getIntent();
int data = intent.getIntExtra("data", 3);
// 打印看看拿到的值,方便排查
Log.d("TAG", "拿到的数据是:" + data);

二、Bundle传递时应用崩溃的问题

你提到用Bundle时跳转崩溃,虽然Logcat里的错误是GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed,这个看起来是模拟器的EGL渲染相关问题,但实际导致崩溃的核心原因大概率是空指针异常——比如getExtras()返回了null,然后调用getInt("data")就会触发崩溃。

排查和修正方案:

  • 确保启动Intent:写完Bundle和putExtras之后,必须调用startActivity(go_to_main),否则Intent没传递过去,getExtras()就是null。
  • 避免空指针:在获取数据前先判断Bundle是否存在,增加空安全判断:
Intent intent = getIntent();
int data = 3; // 默认值
if (intent != null) {
    Bundle bundle = intent.getExtras();
    if (bundle != null) {
        data = bundle.getInt("data");
    }
}
// 这里使用data变量
  • 替换上下文:把getApplicationContext()换成当前Activity的this,比如new Intent(FirstActivity.this, MainActivity.class),ApplicationContext有时候不适合用来启动Activity。

修正后的Bundle方式代码:
第一个Activity:

Intent go_to_main = new Intent(FirstActivity.this, MainActivity.class);
Bundle mBundle = new Bundle();
mBundle.putInt("data", i1);
go_to_main.putExtras(mBundle);
startActivity(go_to_main); // 不要忘记启动!

另外,那个Logcat的EGL错误如果还出现,试试重启模拟器或者换个模拟器镜像,一般是模拟器的底层渲染问题,和你传递数据的逻辑无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:02:56