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

EditText为空时应用崩溃,如何实现Toast提示而非崩溃?

空输入时APP崩溃问题修复方案

问题出在代码执行顺序:你先尝试把输入的字符串转成整数,之后才判断字符串是否为空。当用户未输入任何内容时,空字符串调用Integer.parseInt()会直接抛出NumberFormatException,导致APP崩溃,根本走不到空判断的逻辑分支显示Toast。

修复后的代码调整了逻辑顺序,先做空判断,同时增加非数字输入的异常处理,避免其他输入导致的崩溃:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_thermometer, container, false);

    Button enter = view.findViewById(R.id.btTemp);
    EditText degrees = view.findViewById(R.id.nmDegrees);

    enter.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String tempo = degrees.getText().toString().trim(); // 处理仅输入空格的情况

            if(tempo.isEmpty()){
                Toast.makeText(requireContext(), "Cannot Be Blank!!", Toast.LENGTH_LONG).show();
                return; // 空输入直接返回,不执行后续逻辑
            }

            int temperature;
            try {
                temperature = Integer.parseInt(tempo);
            } catch (NumberFormatException e) {
                Toast.makeText(requireContext(), "Please Enter Valid Number!!", Toast.LENGTH_LONG).show();
                return;
            }

            if(temperature > 100 || temperature < 40){
                Toast.makeText(requireContext(), "Not Viable!!", Toast.LENGTH_LONG).show();
            } else {
                SharedPreferences sharedPreferences = getActivity().getSharedPreferences("Thermo", Context.MODE_PRIVATE);
                SharedPreferences.Editor ed = sharedPreferences.edit();
                ed.putInt("lastTemp", temperature);
                ed.apply();

                Toast.makeText(requireContext(), "Data Saved!!", Toast.LENGTH_LONG).show();
                Bundle onOrOff = new Bundle();
                getParentFragmentManager().setFragmentResult("dataFromThermometer", onOrOff);

                degrees.setText("");
            }
        }
    });

    return view;
}

关键修改点:

  • 优先判断输入字符串是否为空(通过trim()过滤仅输入空格的无效情况),为空直接触发提示并终止后续代码
  • 用try-catch包裹整数转换逻辑,处理用户输入非数字内容的场景,避免额外崩溃
  • 调整逻辑执行顺序,确保只有合法输入才会进入温度范围校验和数据保存流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 14:37:38