2013-11-27 3 views
2

Я пытаюсь добавить проверку ввода в набор из трех EditTexts, которые пользователь вводит в числовые значения. Проблема, с которой я столкнулся, заключается в том, что для вычисления работы пользователь не может ввести нуль в качестве одного из полей ввода или приложение будет аварийно завершено.Как запретить пользователю вводить ноль в качестве входа?

Я попытался реализовать следующее, чтобы предотвратить ввод нуля и показать предупреждение. Я получаю сообщение об ошибке «Невозможно запустить Activity calcResult», который является активностью, которая показывает расчет.

Это ссылка на журнал ошибок: http://pastebin.com/hDsabjR6

Я понимаю из того, что нулевого значения по-прежнему ускользает через проверку, но я не знаю, почему?

String getoffsetlength = offsetLength.getText().toString(); 

if (getoffsetlength.trim().equals('0')) { 

    Toast.makeText(this, "Enter number greater than 0!", Toast.LENGTH_SHORT).show(); 
    return; 
    } 

сбой приложения, когда я использовал эту проверку в идеях app.Any как туда, где я перепутались с этой реализации?

+0

Не могли бы вы опубликовать журнал ошибок – Scott

+0

в порядке, я отправлю его сейчас. –

+0

http://pastebin.com/hDsabjR6 –

ответ

6

Просто добавьте android:digits="123456789" в формат EditText в формате XML. Таким образом, пользователь не сможет ввести 0

[EDIT]

Однако, если вы хотите, чтобы избежать пользователя от ввода 0 только в начале, а затем использовать это:

code_text.addTextChangedListener(new TextWatcher(){ 
      public void onTextChanged(CharSequence s, int start, int before, int count) 
      { 
       if (code_text.getText().toString().matches("^0")) 
       { 
        // Not allowed 
        Toast.makeText(context, "not allowed", Toast.LENGTH_LONG).show(); 
        code_text.setText(""); 
       } 
      } 
      @Override 
      public void afterTextChanged(Editable arg0) { } 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
     }); 
+0

, который будет работать, если пользователь хочет ввести, например, «20». Будет ли это исключать, что пользователь может ввести в него значение с нулем? Моя цель - разрешить пользователю вводить любые числовые значения значение, за исключением пробела или 0 –

+0

@BrianJ Пожалуйста, проверьте отредактированный ответ. Надеюсь, это поможет. – JoelFernandes

2

Попробуйте вместо

if(getoffsetlength.trim().equalsIgnoreCase("0"){ 
Toast.makeText(this, "Enter number greater than 0!", Toast.LENGTH_SHORT).show(); 
return; 
} 
0

вы также можете использовать ниже код

 int PreviousLen; 
     boolean keyDel; 
     etActLoginMobNo.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      mPreviousLen = s.length(); 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      keyDel = mPreviousLen > s.length(); 
      if(!keyDel){ 
       if (etActLoginMobNo.getText().toString().startsWith("0")) { 
        etActLoginMobNo.setText(""); 
        Toast.makeText(context, R.string.enter_mobile_no_without_zero, Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 
Смежные вопросы