当 EditText 为 Empty 或 null 时应用程序崩溃 - 如何解决

问题描述

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button = findViewById(R.id.button);
    textView4 = findViewById(R.id.textView4);
    editTextNumberDecimal2 = findViewById(R.id.editTextNumberDecimal2);
    editTextNumberDecimal3 = findViewById(R.id.editTextNumberDecimal3);
    button.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String s = editTextNumberDecimal2.getText().toString();
            int kg = Integer.parseInt(s);
            double pound = kg;
            String k = editTextNumberDecimal3.getText().toString();
            int cms = Integer.parseInt(k);
            double ft = cms;
            double bmi = (pound / ft / ft) * 10000;

            if (bmi < 18.5) {
                textView4.setText("Thin - Eat something");
            }
            else if (bmi < 25) {
                textView4.setText("Fit - Keep it up");
            }
            else if (bmi < 30) {
                textView4.setText("Fat - Go on a diet");
            }
            else {
                textView4.setText("Very fat - Stop eating");
            }
        }
    });
}

} ……………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… …………忽略这些点……………… ………………………………………………………………………………………………………………………………………………………… ...................................................

解决方法

您不能将空字符串解析为整数。所以先检查它是否为空。

public void onClick(View v) {
    String s = editTextNumberDecimal2.getText().toString();
    if(s.isEmpty()) return;
    int kg = Integer.parseInt(s);
    double pound = kg;
    String k = editTextNumberDecimal3.getText().toString();
    if(k.isEmpty()) return;
    int cms = Integer.parseInt(k);
    // ...
}