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
相关产品推荐
相关产品推荐

