2016-12-10 19 views
0

當用戶插入非LetterOrDigit並在用戶插入LetterOrDigit時啓用它時禁用按鈕。如何在使用「addTextChangedListener」和「Character.isLetterOrDigit(s.charAt(i))」進行偵聽時啓用文本「

我遇到的問題是,即使用戶在非LetterOrDigit之後插入字母,它也會啓用它。但我想只在他刪除非LetterOrDigit角色時啓用。

我的代碼

name1.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      } 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
      } 
      @Override 
      public void afterTextChanged(Editable s) { 
       for (int i = 0; i < s.length(); i++) { 
        if(name1.getText().toString().length()>16) 
        { 
         register.setClickable(false); 
         mistakeusername.setErrorEnabled(true); 
         mistakeusername.setError("You cant insert more then 16 characters"); 
        }else { 
         if (!(Character.isLetterOrDigit(s.charAt(i))||Character.toString(s.charAt(i)).equals("_"))) 
         { 
          register.setClickable(false); 
          mistakeusername.setErrorEnabled(true); 
          mistakeusername.setError("Only allowed Digit, Number or '_'"); 
         }else{ 
          register.setClickable(true); 
          mistakeusername.setErrorEnabled(false); 
          mistakeusername.setError(""); 
         } 
        } 
       } 
      } 
     }); 
+0

我覺得你的問題是,你應該從 '破' '爲' 你的「如果((Character.isLetterOrDigit(s.charAt(I))||字符後! toString(s.charAt(i))。equals(「_」)))「是真的。 – pooyan

回答

0

我覺得你的問題是,你的 if(!(Character.isLetterOrDigit(s.charAt(i))||Character.toSt‌​ring(s.charAt(i)).eq‌​uals("_")))你應該breakfor後也是如此。

試試這個:

name1.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
     } 
     @Override 
     public void afterTextChanged(Editable s) { 
      for (int i = 0; i < s.length(); i++) { 
       if(name1.getText().toString().length()>16) 
       { 
        register.setClickable(false); 
        mistakeusername.setErrorEnabled(true); 
        mistakeusername.setError("You cant insert more then 16 characters"); 
       }else { 
        if (!(Character.isLetterOrDigit(s.charAt(i))||Character.toString(s.charAt(i)).equals("_"))) 
        { 
         register.setClickable(false); 
         mistakeusername.setErrorEnabled(true); 
         mistakeusername.setError("Only allowed Digit, Number or '_'"); 
         break; 
        }else{ 
         register.setClickable(true); 
         mistakeusername.setErrorEnabled(false); 
         mistakeusername.setError(""); 
        } 
       } 
      } 
     } 
    }); 
+0

謝謝你!!!!!我嘗試了整整一天,對於這個簡單的解決方案:D – MrOrhan

+0

和sry,我不能給予重擊,沒有足夠的分數^^ – MrOrhan

+0

好吧。我很高興,這是你的解決方案。 – pooyan

相關問題