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

安卓货币转换器点击转换按钮触发FATAL错误应用闪退问题求助

问题根因

看报错栈的底层异常android.content.res.Resources$NotFoundException: String resource ID #0x3a98,问题出在setText调用环节,和Integer.parseInt无关。
安卓TextView(EditText是它的子类)的setText方法有两个常用重载:

  • 接收CharSequence类型参数:用于直接设置要显示的文本内容
  • 接收int类型参数:系统会把这个int当成安卓资源ID,去资源文件里找对应ID的字符串展示
    你在计算完结果后,直接把强转后的int类型数值传给了setText,系统误以为你传入的是字符串资源ID,找不到对应资源就抛出了异常,导致应用崩溃。

修复方案

把要设置的数值转为字符串类型再传给setText即可,同时建议增加输入非空判断,避免空输入时parseInt也触发崩溃,修正后的converter方法如下:

public void converter(View view) {
    int rate = 15000;
    EditText LBP = (EditText) findViewById(R.id.LBP);
    EditText Dollar = (EditText) findViewById(R.id.Dollar);
    if (LBP.isEnabled()) {
        String lbpText = LBP.getText().toString().trim();
        if (lbpText.isEmpty()) {
            Toast.makeText(this, "请输入LBP金额", Toast.LENGTH_SHORT).show();
            return;
        }
        int LBPAmount = Integer.parseInt(lbpText);
        double DollarResult = LBPAmount / rate;
        // 把计算结果转为字符串再设置到输入框
        Dollar.setText(String.valueOf((int) DollarResult));
    } else if (Dollar.isEnabled()) {
        String dollarText = Dollar.getText().toString().trim();
        if (dollarText.isEmpty()) {
            Toast.makeText(this, "请输入美元金额", Toast.LENGTH_SHORT).show();
            return;
        }
        int DollarAmount = Integer.parseInt(dollarText);
        double LBPResult = DollarAmount * rate;
        // 把计算结果转为字符串再设置到输入框
        LBP.setText(String.valueOf((int) LBPResult));
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:21:02