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

Android千米转厘米App点击转换按钮崩溃 TextView设置数值异常

问题排查结果

直接崩溃原因

你在执行tv.setText(valor)时传入的valor是数值类型,Android的TextView.setText()存在方法重载:如果传入int类型参数,系统会默认将其识别为字符串资源ID,尝试在项目的res/values/strings.xml中查找对应ID的字符串资源,你的项目中不存在对应ID的资源,因此抛出Log中显示的Resources$NotFoundException异常,直接导致应用崩溃。

潜在风险点

你的EditText控件设置了android:inputType="numberDecimal"属性,允许用户输入小数,而你当前使用Integer.parseInt()解析输入内容,一旦用户输入带小数的数值,会直接抛出NumberFormatException异常,同样会导致应用崩溃。另外如果用户未输入内容直接点击按钮,取到的输入字符串为空,也会触发解析异常。

修复方案

修改calcular方法,先做输入合法性校验,将数值转为字符串后再传入setText方法,同时改用浮点数解析适配小数输入,参考代码如下:

public void calcular(View v){
        EditText text = findViewById(R.id.pt_entrada);
        String inputContent = text.getText().toString().trim();
        // 输入为空校验
        if (inputContent.isEmpty()) {
            // 可自行替换为你的提示逻辑
            Toast.makeText(this, "请先输入千米数值", Toast.LENGTH_SHORT).show();
            return;
        }
        // 改用Double解析适配小数输入
        double input = Double.parseDouble(inputContent);
        // 1千米=100000厘米,可根据你的实际变量名调整
        double cm = 100000;
        double valor = input * cm;
        Log.d("info", String.valueOf(valor));
        TextView tv = findViewById(R.id.tv_pantalla);
        // 将数值转为字符串后再设置到TextView
        tv.setText(String.valueOf(valor));
        // 如果需要固定小数位数+单位可以用格式化写法:
        // tv.setText(String.format("换算结果:%.2f 厘米", valor));
    }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:15:02