Android应用尝试从Intent获取数据时崩溃问题求助
崩溃原因定位
从报错栈信息可以直接定位崩溃发生在MainActivity的onClick方法内的Toast调用逻辑,和Intent传参无关,具体根因如下:
Toast.makeText方法存在两个常用重载:- 重载1:
makeText(Context context, int resId, int duration)接收int类型的字符串资源ID作为展示内容 - 重载2:
makeText(Context context, CharSequence text, int duration)接收字符串作为展示内容
- 重载1:
- 你的代码中直接把int类型的变量
val(取值1/2/3)传给了Toast.makeText,系统会默认匹配第一个重载,把1/2/3当成字符串资源ID去查找,而项目中不存在ID为1/2/3的字符串资源,因此抛出Resources$NotFoundException导致崩溃。 - 另外你代码中
openActivity2方法内的intent1.putExtra(isc, val)存在语法问题,isc未作为变量声明,会直接导致编译失败。
修复方案
- 修复Toast调用逻辑,将int值转成字符串后再传入:
// 原来的错误代码 // Toast.makeText(MainActivity.this, val, Toast.LENGTH_SHORT).show(); // 替换为以下代码 Toast.makeText(MainActivity.this, String.valueOf(val), Toast.LENGTH_SHORT).show();
- 修复putExtra的key参数错误,给字符串key加引号:
// 原来的错误代码 // intent1.putExtra(isc, val); // 替换为以下代码,isc替换为你实际需要的key字符串 intent1.putExtra("isc", val);
修复完成后应用即可正常跳转,Activity2侧的getIntent逻辑不需要修改,可以正常拿到val参数。
内容的提问来源于stack exchange,提问作者rayan siblani
相关产品推荐
相关产品推荐

