2017-09-12 2 views
0

J'ai un scénario où je n'autorise qu'un seul caractère dans edittext. donc dans OnTextChanged J'ai vérifié si une lettre est entrée, puis je passe la mise au point suivante edittextOnTextChanged n'est pas appelé lorsque la longueur d'edittext est pleine

<EditText 
       android:id="@+id/etpinPassword1" 
       style="@style/Edittext_with_weight" 
       android:imeOptions="actionNext" 
       android:inputType="number" 
       android:maxLength="1" /> 

et voici mon est textWatcher code:

OnTextChanged: ->

if (isValueEntered(charSequence)) { 
        etpinPassword2.requestFocus(); 
        etpinPassword2.setEnabled(true); 
        appendPassword(charSequence); 
       } 

private boolean isValueEntered(CharSequence charSequence) { 
     return charSequence.length() > 0; 
    } 

Tout fonctionne bien, sauf quand je reviens à un edittext déjà rempli, onTextChanged n'est jamais appelé. Je veux l'appeler de nouveau afin que je puisse passer le focus au prochain edittext si le premier est déjà plein.

+0

vous supprimez le texte lors de votre deuxième visite à edittext rempli? –

+1

Comment allez-vous revenir à l'EditText rempli? Vérifiez qu'il récupère le focus. Aussi la méthode ne sera pas appelée si vous ne changez pas le texte –

+0

mettez votre opération dans l'écouteur après le texte modifié. –

Répondre

0

Le problème est que vous définissez la longueur maximale à 1, ce qui vous évitera d'entrer un autre caractère.

+0

Comment puis-je faire les deux choses, je veux définir maxLength comme 1 et je veux aussi vérifier si un utilisateur tape après qu'un chiffre est entré –

+0

pourquoi l'utilisateur tape un autre caractère sans en supprimer un? –

+0

Je veux gérer cela, que si déjà tapé et l'utilisateur est encore en train de taper, il devrait passer à un autre edittext. En fait, je fais une vue à quatre chiffres, où j'ai quatre edittext avec maxLength comme 1 pour chaque edittext. –