从edittext中获取数值的另一种方法



我目前正在使用以下代码行从edittext中获取值:

double value = Double.valueOf(editText.getText().toString().trim());

这是在onclick方法内部。我正在开发的应用程序每次点击该按钮都会崩溃,我已经评论了该方法中每一行可能的变化,并发现正是这行代码导致了它崩溃。我不知道为什么会发生这种情况,但有其他选择吗?将其解析为double也不起作用。

Double.parseDouble(String)返回基元类型。

Double.valueOf(String)返回Double类型的包装器对象

所以你可以按照以下方式来做,

String strValue = editText.getText().toString().trim();

检查值是否为空。

if(!strValue.isEmpty()) {
double value = Double.parseDouble(strValue);
}

if(!strValue.isEmpty()) {
Double value = Double.valueOf(strValue);
}

崩溃是因为你正在对null或空值进行微调。尝试添加检查

double value=0.0;
if(null!=editText && null!=editText.getText() && editText.getText().length() > 0 && !TextUtils.isEmpty(editText.getText().toString())){
value = Double.parseDouble(editText.getText().toString().trim());
}else{
editText.setError("Your message");
}

试试这个:

String s=editText.getText().toString().trim();
if(!s.equalsIgnoreCase("")&& !s.equalsIgnoreCase(null)&& !s.isEmpty()) {
Double value = Double.parseDouble(s);
}else{
//alert
}

推荐

使用TextUtils类的isEmpty方法。

double value;
if(!TextUtils.isEmpty(editText.getText().toString().trim())){
value = Double.parseDouble(editText.getText().toString().trim());
}

TextUtils的isEmpty方法的实现:

public static boolean isEmpty(@Nullable CharSequence str) {
if (str == null || str.length() == 0) {
return true;
} else {
return false;
}
}

最新更新