有没有人可以看一下下面的代码,并指出问题所在?当editText
留空时,程序会给出一个错误,并且只在所有信息都存在的情况下才进行计算。当前程序在文本丢失时崩溃,这是为什么呢?
EditText editText1, editText2;
double numA, numB, numC;
TextView answer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calc);
editText1 = (EditText) findViewById(R.id.editText1);
editText2 = (EditText) findViewById(R.id.editText2);
}
public void btnClick(View v)
{
if(editText1.getText().length()==0)
{
editText1.setError("please input text");
}{
if (editText2.getText().length()==0)
{
editText2.setError("please input text");
}
numA = new Double(editText1.getText().toString());
numB = new Double(editText2.getText().toString());
numC=(numA + numB); answer.setText(Double.toString(numC));
}
}}
发布于 2012-06-05 17:30:04
问题是您试图将""
解析为一个数字(具体地说,是一个双精度数)。您正在检查空值,但即使设置了错误,您仍在尝试解析它。您需要将new Double()
语句放在一个try-catch块中,并捕获在尝试解析无效输入时发生的异常。这样,即使用户输入的随机文本字符串也不能作为双精度值解析,也是安全的。
发布于 2012-06-05 17:27:16
将您的代码更改为:
if(TextUtils.isEmpty(editText1.getText()))
{
editText1.setError("please input text");
}
if(TextUtils.isEmpty(editText2.getText()))
{
editText2.setError("please input text");
}
TextUtils.isEmpty(str)
所做的就是返回str == null || str.length() == 0
。
发布于 2012-06-05 18:34:47
尝尝这个,
只需将您的语句替换为these..and就可以了。
if ((editText1.getText().toString()).equals(null))
if ((editText2.getText().toString()).equals(null))
https://stackoverflow.com/questions/10901935
复制相似问题