Automatiquement le format de numéro de téléphone dans l'EditText
Dans mon application, l'utilisateur doit entrer un numéro de téléphone à une EditText
champ en utilisant le format suivant:
1(515)555-5555
Je ne veux pas que l'utilisateur de taper "(", ")", ou "-" en entrant le numéro; je veux que ces caractères soient ajoutés automatiquement.
Par exemple, supposons que l'utilisateur a tapé 1
-- la parenthèse après "1" doit être ajouté automatiquement, de sorte que "1(" sera affiché. Et je voudrais avoir des fonctionnalités similaires lors de la suppression.
J'ai essayé de mettre le texte dans le afterTextChanged
méthode de onTextWatcher
de l'interface, mais ça ne fonctionne pas; c'est plutôt l'origine d'une erreur. Toute aide sera grandement appréciée.
afterTextChanged
et le journal de l'erreur. Sans celles-ci, il est difficile de savoir quel est le problème (bien que je vais faire une supposition de toute façon).
OriginalL'auteur Amit Kumar | 2011-02-21
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement un problème parce que
afterTextChanged
est ré-entrant, c'est à dire les modifications apportées au texte en cause la méthode à appeler de nouveau.Si c'est ça le problème, une façon est de garder une variable d'instance drapeau:
Comme alternative, vous pouvez simplement utiliser PhoneNumberFormattingTextWatcher, il ne faut pas faire la mise en forme que vous avez décrit, mais là encore vous n'avez pas à faire beaucoup pour l'utiliser.
Cela a fonctionné, mais a été difficile. Pour mon problème de mise en forme, je voulais m'assurer que le reformatage de code se termine avec le déplacement du curseur (setSelection()), sinon de la réécriture du texte entraînera le curseur se déplace toujours vers le début (ce qui est frustrant interface.)
OriginalL'auteur Mike
vous pouvez essayer
Vérifier PhoneNumnerFormattingTextWatxher
dans le cas où vous voulez votre propre mise en œuvre de TextWatcher ensuite, vous pouvez utiliser folling appraoch:
OriginalL'auteur Nayanesh Gupte