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

Android Studio中EditText操作致应用无响应问题求助

解决EditText空字符串转Integer导致的NumberFormatException问题

嗨,我看到你遇到的问题了——当点击加减按钮时应用直接崩溃,从Logcat报错能明确看到是java.lang.NumberFormatException: For input string: "",也就是EditText为空时,直接调用Integer.parseInt()无法把空字符串转成整数,这就是核心原因。咱们一步步来修复这个问题:

解决思路

  • 先检查EditText输入内容:转换整数前,先判断文本是否为空/空白,为空时给一个默认值(比如你布局里的hint值100)
  • 添加异常捕获兜底:防止意外的格式问题(比如用户输入了空格或者其他非数字内容)
  • 可选:处理边界值,比如不让数字减到负数以下

修改后的代码

把你原来的btnDec和btnInc点击事件替换成下面的代码:

btnDec.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String inputText = edtPrime.getText().toString().trim();
        int number;
        // 处理空输入,使用默认值100
        if (inputText.isEmpty()) {
            number = 100;
        } else {
            try {
                number = Integer.parseInt(inputText);
                // 可选:不让数字小于1,避免负数
                if (number <= 1) {
                    number = 1;
                    edtPrime.setText(String.valueOf(number), TextView.BufferType.EDITABLE);
                    return;
                }
            } catch (NumberFormatException e) {
                // 兜底:如果输入了非数字内容,也用默认值100
                number = 100;
            }
        }
        number--;
        edtPrime.setText(String.valueOf(number), TextView.BufferType.EDITABLE);
    }
});

btnInc.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String inputText = edtPrime.getText().toString().trim();
        int number;
        if (inputText.isEmpty()) {
            number = 100;
        } else {
            try {
                number = Integer.parseInt(inputText);
            } catch (NumberFormatException e) {
                number = 100;
            }
        }
        number++;
        edtPrime.setText(String.valueOf(number), TextView.BufferType.EDITABLE);
    }
});

代码说明

  1. trim()处理:先去掉文本前后的空格,避免用户输入空格导致的空字符串判断失误
  2. 空输入判断:当EditText为空时,直接使用你布局hint里的默认值100,保证不会出现空字符串转整数的问题
  3. try-catch捕获异常:即使设置了inputType="number",也可能出现意外的输入格式,用try-catch兜底可以避免应用崩溃
  4. 边界值处理(可选):在自减逻辑里加了判断,不让数字小于1,你可以根据自己的需求调整这个边界值

另外,你布局里的android:inputType="number"已经做得很好了,能限制用户输入非数字内容,再加上上面的代码处理,就能彻底解决这个崩溃问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:42:09