2012-06-05 11 views
0

Может ли кто-нибудь взглянуть на приведенный ниже код и указать на очевидное, что не так? Программа выдает сообщение об ошибке, когда editText остается пустым и только делает расчет, как только вся информация присутствует. В настоящее время программа вылетает, когда отсутствует текст, почему это так?Ошибки при изменении 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)); 
    } 
}} 

ответ

0

Проблема в том, что вы пытаетесь разобрать "" в число (в частности, двойное). Вы проверяете пустые значения, но вы все еще пытаетесь разобрать его, даже если вы установили ошибку. Вам нужно поместить операторы new Double() в блок try-catch и уловить исключения, возникающие при попытке проанализировать недопустимый ввод. Таким образом, это безопасно, даже если пользователь вводит случайную строку текста, которая также не обрабатывается как двойной.

0

Измените код следующим образом:

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.

0

Попробуйте это,

Просто замените ваше заявление с these..and он будет работать.

if ((editText1.getText().toString()).equals(null)) 


if ((editText2.getText().toString()).equals(null)) 
0

Just Do

if(editText1.getText().toString().equals(null){//your code here} 
if(editText2.getText().toString().equals(null){//your code here} 
Смежные вопросы