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

Android Activity间传整数至TextView触发NumberFormatException,求指导

搞定Android Activity传整数的NumberFormatException问题

嗨,兄弟,我来帮你解决这个头疼的问题!你遇到的NumberFormatException本质就是你尝试把一个空字符串转换成整数了,大概率是在传值或者接收值的环节出了纰漏,咱们一步步来排查修复:

第一步:检查MainActivity的传值逻辑

先确认你在按钮点击事件里的代码是不是正确传递了整数:

  • 如果是直接传递固定整数,代码应该是这样的:
// 比如你要传的整数是50
int targetNum = 50;
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("KEY_NUMBER", targetNum); // 直接传int类型,别转成空字符串
startActivity(intent);
  • 如果是从EditText获取用户输入的整数,一定要先做非空判断,避免拿到空字符串:
EditText inputEditText = findViewById(R.id.your_edit_text_id);
String inputContent = inputEditText.getText().toString().trim();
// 先判断输入是否为空
if (!inputContent.isEmpty()) {
    int targetNum = Integer.parseInt(inputContent);
    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    intent.putExtra("KEY_NUMBER", targetNum);
    startActivity(intent);
} else {
    // 给用户个提示,别让他点了按钮没反应
    Toast.makeText(this, "请输入一个有效的整数哦", Toast.LENGTH_SHORT).show();
}

第二步:修复第二个Activity的接收逻辑

别用getStringExtra去拿整数!直接用getIntExtra就能拿到正确的int值,避免空字符串转int的报错:

Intent receivedIntent = getIntent();
if (receivedIntent != null) {
    // 第二个参数是默认值,如果没拿到传递的数就用这个值(比如0)
    int receivedNumber = receivedIntent.getIntExtra("KEY_NUMBER", 0);
    TextView resultTv = findViewById(R.id.your_text_view_id);
    resultTv.setText(String.valueOf(receivedNumber)); // 转成字符串显示在TextView里
}

⚠️ 重点:传递时用的key(比如上面的KEY_NUMBER)和接收时的key必须完全一致,大小写也不能错!不然会拿不到值,默认返回0或者空,一样会触发报错。

第三步:排查容易踩的小坑

  • 确认两个Activity都在AndroidManifest.xml里注册了(虽然编译没报错,但漏注册也会导致启动异常);
  • 如果是从EditText取数,一定要加trim(),避免用户输入空格导致的“看似有内容实际是空字符串”的情况;
  • 别在传递整数的时候多此一举转成空字符串,直接传int类型最稳妥。

按照上面的步骤改完,应该就能解决你遇到的Logcat报错啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:41:21