Je désactive un bouton lorsque l'utilisateur insère non LetterOrDigit
et l'activer lorsqu'un utilisateur insère LetterOrDigit
.Comment activer le texte lors de l'écoute avec "addTextChangedListener" et "Character.isLetterOrDigit (s.charAt (i))"
Le problème que j'ai, c'est qu'il le permet aussi, même lorsque l'utilisateur insère une lettre après un LetterOrDigit
. Mais je veux activer seulement quand il supprime le caractère non LetterOrDigit
.
Mon code
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("");
}
}
}
}
});
Je pense que votre problème est que vous devez 'pause' de 'pour' après votre « if ((Character.isLetterOrDigit (s.charAt (i)) || Caractère!. toString (s.charAt (i)). equals ("_"))) "est vrai. – pooyan