2017-08-17 55 views
0

這裏是我想要的代碼:如何限制我的edittext允許輸入0-125,而不允許輸入任何> 125的內容?

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

      String strEnteredVal = edtMaxAge.getText().toString(); 

      if(!strEnteredVal.equals("")) { 
       int num = Integer.parseInt(strEnteredVal); 
       if (num < 125) { 
        edtMaxAge.setText(num); 
       } else { 
        Toast.makeText(getContext(), "max age should be less than 125 ", Toast.LENGTH_SHORT).show(); 
        edtMaxAge.setText(""); 
       } 
      } 
      } catch (NumberFormatException ex) { 
       // Do something 
      } 
     } 

當我輸入一個數> = 125我需要顯示彈出消息,如「最大年齡應小於125」,不接受的字符。

+0

什麼錯誤,你所面臨的是什麼? – Nitesh

+0

在這種情況下使用InputFilter –

+0

我的應用程序崩潰。 –

回答

1

很可能你正面臨着一種無窮遞歸,當你輸入一些文字onTextChanged方法被調用時,它會執行這一行edtMaxAge.setText(num);,這將再次觸發onTextChanged。使用InputFilter而不是TextWatcher。 Here你可以找到一個例子。

0

使用InputFilter。
它提供了很多的選擇,你的輸入濾波器,如大寫字母,一定限度等
Here內的數字是確切的答案,你需要

0
public void afterTextChanged(Editable editable) { 

try { 

      if(!TextUtils.isEmpty(editable) { 
       initial = editable.toString(); 
       int num = Integer.parseInt(initial); 
       if (num < 125) { 
        edtMaxAge.setText(num); 
       } else { 
        Toast.makeText(getContext(), "max age should be less 
       than 125 ", Toast.LENGTH_SHORT).show(); 
        edtMaxAge.setText(""); 
        return; 
       } 
      } 

} catch (NumberFormatException ex) { 
       // Do something 
      } 
     }