如何在edittext中输入任何内容时避免异常?

时间:2012-09-11 05:43:50

标签: android exception android-edittext

我创建了edittexts,用户可以在其中输入数字。在我的应用程序中,用户可以通过单击提交按钮来提交值。(注意:最初我在代码中使用setText()将所有3个EditTexts设置为“”)提交后,我保留了以下这些行以检索方法中的值。

String st1=editText1.getText().toString();
int tempVal1=Integer.parseInt(st);
String st2=editText2.getText().toString();
int tempVa2=Integer.parseInt(st);
String st3=editText2.getText().toString();
int tempVal3=Integer.parseInt(st);

但是我的问题是,如果用户没有在第一个editText中输入任何值并且只填充第二个和第三个并且提交,那么tempVal1中的值应该是0.但是我得到了例外,因为第一个语句因为没有任何数据。如何避免此异常,并在未填写相应编辑文本中的任何内容时保持tempVal为0?

我还有一个疑问,当我添加此int x=Integer.valueOf(editText.getText());行时,我收到以下错误。为什么?The method valueOf(String) in the type Integer is not applicable for the arguments (Editable)

请澄清我的疑虑。

4 个答案:

答案 0 :(得分:7)

在将其转换为数字之前,您需要先检查EditText

if( !editText1.getText().toString().equals("") && editText1.getText().toString().length() > 0 )
{
    // Get String
    Integer.parseInt(editText1.getText().toString());
}

答案 1 :(得分:1)

您必须检查编辑文本的条件不为空或编辑文本中没有值,如下所示。

EditText的条件不是空白。

if(editText1.getText().toString().length() != 0)
{
    // Get String
    Integer.parseInt(editText1.getText().toString());
}

答案 2 :(得分:0)

  

Integer类型中的方法valueOf(String)不适用   参数(可编辑)

表示它正在寻找一个String参数,但得到一个Editable

尝试x=Integer.valueOf(editText.getText().toString());

关于例外:

使用Try & Catch包围代码,或在解析整数之前执行Null检查。

答案 3 :(得分:0)

您必须获取NumberFormatException,因为String为空,并且空白无法解析为整数。 因此,用0初始化这些变量,并将解析代码放入try catch。如下:

int tempVal1=0;
int tempVal2=0;
int tempVal3=0;

String st1=editText1.getText().toString();
try{    
  tempVal1=Integer.parseInt(st1);
}
catch(NumberFormatException ex) {}

String st2=editText2.getText().toString();
try{
   tempVal2=Integer.parseInt(st2);
}
catch(NumberFormatException ex){}

String st3=editText2.getText().toString();
try{    
   tempVal3=Integer.parseInt(st3);
}
catch(NumberFormatException ex){}