根据具有空值的 EditText 处理 TextView 的更改

Handle Change of TextView according to EditText with Empty value

我在名为“deviseValue”的 EditText 上使用 TextChangedListener 并对其进行操作以显示 sellValuebuyValue 中的其他值,这两个 TextViews ,如下:

deviseValue.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}
        @Override
        public void afterTextChanged(Editable s) {
            Double dDeviseValue = Double.valueOf(deviseValue.getText().toString());
            Double sellResult = dDeviseValue*dSellValue;
            Double buyResult = dDeviseValue*dBuyValue;
            sellValue.setText(sellResult.toString());
            buyValue.setText(buyResult.toString());
        }
    });

一切正常,但是,当我删除 deviseValue 的所有值(即:EMPTY)时..我的应用程序崩溃了!!

如何处理这种情况,以便当用户删除所有值时,deviseValue 自动变为 > 1。?

应用程序崩溃,因为您尝试将字符串值从 edittext 转换为双精度值。但是当你清除你的 edittext deviseValue.getText().toString() 是“”(空)。这就是你得到 NumberFormatException 的原因。

尝试检查 deviseValue.getText().toString(),然后再将其转换为双精度数。 例如:

String dDeviseText = etEmail.getText().toString();
Double dDeviseValue = Double.valueOf(dDeviseText.isEmpty() ? "1" : dDeviseText);

并且您应该防止为此编辑文本输入非数字字符。