You need to enable JavaScript to run this app. Android onActivityResult接收回传Intent extras始终为null引发异常
优惠活动
大模型
产品
解决方案
定价
更多

Android onActivityResult接收回传Intent extras始终为null引发异常

问题原因与修复方案

崩溃根因

错误日志显示返回的Intent已经携带了附加数据,不存在extras读取失败的问题,崩溃完全来自StartToWiez的变量未初始化:

  • 你在StartToWiez中声明的player1Score/player2Score/player3Score/player4Score为包装类Integer,未赋值时默认值为null
  • 首次执行onActivityResult中的player1Score += data.getIntExtra(...)时,Java会自动对包装类做拆箱操作,调用null.intValue()直接抛出空指针,完全匹配错误日志的报错栈。

额外潜在问题

  • StartRound中计算得分的switch块为空,未给score数组的4个元素赋值,当前所有回传的得分都是默认的0,计分逻辑无实际效果
  • 直接复用getIntent()(启动当前Activity的Intent)作为返回Intent的写法不规范,会冗余携带启动时的附加数据,建议新建空Intent用于返回

修复代码参考

1. 修复得分变量的空指针问题

将StartToWiez中的成员变量声明从:

Integer player1Score;
Integer player2Score;
Integer player3Score;
Integer player4Score;

改为基本类型,避免拆箱空指针:

int player1Score = 0;
int player2Score = 0;
int player3Score = 0;
int player4Score = 0;

2. 规范返回Intent的写法

将StartRound中按钮点击事件里的返回逻辑从:

Intent returnIntent = getIntent();
returnIntent.putExtra("Player1Score", score[0]);
returnIntent.putExtra("Player2Score", score[1]);
returnIntent.putExtra("Player3Score", score[2]);
returnIntent.putExtra("Player4Score", score[3]);
setResult(RESULT_OK, returnIntent);

改为新建独立空Intent:

Intent returnIntent = new Intent();
returnIntent.putExtra("Player1Score", score[0]);
returnIntent.putExtra("Player2Score", score[1]);
returnIntent.putExtra("Player3Score", score[2]);
returnIntent.putExtra("Player4Score", score[3]);
setResult(RESULT_OK, returnIntent);

3. 补全得分计算逻辑

在StartRound的switch(gametypetest)分支中,根据不同游戏规则给score数组的4个元素赋值,否则回传的得分始终为0,计分表格无法正常统计。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 17:36:04