2016-01-01 4 views
2

Я пытаюсь создать очень простое приложение. Существуют имена продуктов с соответствующими номерами продуктов. Пользователь вводит номер и появляется соответствующее имя.Обработка исключений в инструкции If?

editTextField1 = типы число пользователей

button1 = кнопку поиска

editTextField2 = название продукта появляется

Теперь мой код работает, но Существует только одна проблема, когда пользователь Безразлично» t введите что-нибудь и нажимайте на button1. Значит, мне нужен какой-то обработчик исключений? Я изо всех сил пытаюсь обнять голову. Я знаю, как я кодирую, объявляя множество переменных, это длинный LOL.

public class MainActivity extends AppCompatActivity { 

private Button button1; 
private EditText editText1; 
private EditText editText2; 
private int a = 123; 
private String b = "TV"; 
private int c = 333; 
private String d = "Radio"; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    button1 = (Button) findViewById(R.id.button1); 
    editText1 = (EditText) findViewById(R.id.editText1); 
    editText2 = (EditText) findViewById(R.id.editText2); 

    View.OnClickListener myOnClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      double pNumber = Double.parseDouble(editText1.getText().toString()); 
      if(pNumber == a){ 
       editText2.setText(b); 
      } 
      else if (pNumber == c){ 
       editText2.setText(d); 
      } 
      else 
       editText2.setText("Invalid Product Number"); 
      } 


    }; 

    button1.setOnClickListener(myOnClickListener); 
+1

Вы можете просто деактивировать 'Button' и только активировать его, когда какой-нибудь текст вводится в' TextField'. – Turing85

ответ

0

Используйте это:

View.OnClickListener myOnClickListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     String text = editText1.getText().toString(); 

     if(!TextUtils.isEmpty(text)) { 
      // EditText1 is not empty 
      try { 
       double pNumber = Double.parseDouble(text); 
       if(pNumber == a) 
        editText2.setText(b); 
       else if (pNumber == c){ 
        editText2.setText(d); 
       else 
        editText2.setText("Invalid Product Number"); 
      } 
      catch(NumberFormatException e) { 
       // Invalid input, not a double 
       editText2.setText("Invalid double input"); 
      } 
     } 
     else { 
      // EditText1 is empty 
      editText2.setText("EditText1 is empty"); 
     } 
    } 
}; 
+0

Работает как шарм, да благословит вас Бог –

+0

Добро пожаловать. –

0

В дополнение к Spartas Ответ, также было бы хорошей идеей, чтобы проверить наличие действительного двойного ввода:

try { 
    double pNumber = Double.parseDouble(text); 
catch(NumberFormatException e){ 
    //Do ExceptionHandling 
} 
+0

В каких обстоятельствах это не было бы двойником? Пользователь может вводить только цифры, а не буквы или демические точки. –

+0

Обычно его можно также вводить не числовые значения в ввод edittext. С кодом, который вы нам предоставили, можно было бы также ввести не числовые значения. Если вы внесли какие-либо дополнительные ограничения в xml-файл или только указали цифровую клавиатуру пользователю, тогда проверка может быть не нужна. Но это никогда не повредит :) – DZDomi

0

Есть в основном 2 способа как вы можете справиться с этим

1) Использовать пробник

try{ 
double pNumber = Double.parseDouble(editText1.getText().toString()); 
    }catch(NumberFormatException e){ 
    //show a message to user 

    } 

2) использовать вход САНИТАРИЯ

String number = editText1.getText().toString(); 
    boolean isNumber = number.matches("^-?\\d+$"));//haven't tried this though 
    if(!isNumber) //if not number 
    //show a message to user 
+0

не будет номером переменной всегда не экземпляром Number, потому что вы объявили его как String? Поскольку String наследует только объект Object И Number также наследует только объект Object – DZDomi

+0

@DZDomi Да, я обновил свой ответ. –

Смежные вопросы