Numéro de téléphone de mise en forme d'un EditText dans Android
Je suis un simple Carnet d'Adresses de l'application (ciblage 4.2) qui prend le nom, l'adresse, ville, état, code postal et téléphone.
Je veux formater le numéro de téléphone d'entrée comme un numéro de téléphone (XXX) XXX-XXXX, mais j'ai besoin de tirer la valeur comme une chaîne de caractères afin que je puisse le stocker dans ma base de données lorsque j'enregistre. Comment puis-je faire cela??
J'ai l'EditText ensemble pour "numéro de téléphone" mais qui de toute évidence ne pas trop en faire.
- Avez-vous besoin de la chaîne à être de tous les nombres, ou voulez-vous des espaces, des tirets et les parenthèses aussi?
- Je suppose que la chaîne pourrait être formaté le même que le numéro de téléphone, juste aussi longtemps que je peux le mettre dans une variable de chaîne, puis l'insérer dans ma table de base de données
- vous pouvez utiliser le pattern matching avec expression régulière
- Vous devez également vous rappeler que (xxx) xxx - xxxx n'est que le format de nombre dans les etats-unis et quelques autres endroits.
Vous devez vous connecter pour publier un commentaire.
Il y a une bibliothèque appelée PhoneNumberUtils qui peuvent vous aider à composer avec le numéro de téléphone des conversions et des comparaisons. Par exemple, l'utilisation ...
... au format de votre numéro dans un format standard.
... aide avec floue des comparaisons. Il y a beaucoup plus. Découvrez http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html pour plus d'.
p.s. réglage de l'EditText à
phone
est déjà un bon choix; à terme, il pourrait être utile d'ajouterdigits
par exemple, dans votre présentation, il semble que ...N
,*
et les autres, dans mon champs de numéro de téléphone, si je n'ai pas utilisédigits
. En fait, ces personnages peuvent faire partie d'un numéro de téléphone, de sorte qu'ils sont effectivement autorisés. Si vous ne souhaitez autoriser les numéros, utilisezdigits
pour plus de restriction..
au lieu de-
. Personnellement, je pense que si un utilisateur déverse uneN
ou;
dans leur numéro, sans savoir ce que cela signifie, c'est de leur faute. 🙂PhoneNumberUtils.formatNumber()
pour le format canonique, parce que ça simplifie le numéro de téléphone de comparaison de beaucoup. En plus, j'avais store le nombre que l'utilisateur est entré, car il est utilisé pour rechercher le nombre qu'il y est entré. Si vous êtes à la recherche à un très particulier de format Raghunandans solution (en utilisant le pattern matching) pourrait être parfait.Simplement utiliser le PhoneNumberFormattingTextWatcher, il suffit d'appeler:
Plus
Pour être clair, PhoneNumberFormattingTextWatcher de épine dorsale est le PhoneNumberUtils classe. La différence est la TextWatcher maintient l'EditText alors que vous devez appeler
PhoneNumberUtils.formatNumber()
chaque fois que vous modifiez son contenu.Simplement Utiliser Ce :
Dans Du Code Java :
Dans le Code XML :
Ce code fonctionne pour moi. Il va format automatique lorsque le texte modifié en modifier le texte.
String phoneNumbers = maskedString.replaceAll("[^\\d]", "");
pour obtenir phonenum sans espacesandroid:inputType="phone|number"
comme un mécanisme de secoursJ'ai récemment fait une semblable mise en forme comme le 1 (XXX) XXX-XXXX pour Android EditText. Vous trouverez le code ci-dessous. Utilisez simplement le TextWatcher sous-classe que le texte modifié de l'écouteur :
....
...
Peut-être ci-dessous exemple de projet vous aide;
https://github.com/reinaldoarrosi/MaskedEditText
Que ce projet contient une classe d'affichage de l'appel
MaskedEditText
. En premier, la, vous devez l'ajouter dans votre projet.Ensuite, vous ajoutez les dessous de la partie xml dans res/values/attrs.xml fichier de projet;
Ensuite, vous serez prêt à utiliser
MaskedEditText
vue.Dernière, vous devez ajouter MaskedEditText dans votre fichier xml, ce que vous voulez comme ci-dessous;
Bien sûr, vous pouvez utiliser le programme.
Après ces étapes, l'ajout de
MaskedEditText
apparaîtra comme ci-dessous;Comme par programme, si vous voulez le prendre à la valeur de texte comme démasqué, vous pouvez utiliser la ligne;
De prendre masqué valeur, vous pouvez envoyer
false
valeur au lieu detrue
valeur dans lagetText
méthode.Suivez les instructions de cette Réponse de format de l'EditText masque.
Et après cela, vous pouvez prendre les numéros originaux de la masqués chaîne avec:
Vous pouvez utiliser une Expression Régulière avec le modèle correspondant à l'extrait de nombre à partir d'une chaîne.
PhoneNumberUtils
est la meilleure solution.Ne vous inquiétez pas. J'ai fais le plus de la meilleure solution pour vous. Vous pouvez le voir, cette application simple lien ci-dessous.
Pas: N'oubliez pas de mettre en œuvre TextWatcher" avec votre classe d'activité.
Lien :https://drive.google.com/open?id=0B-yo9VvU7jyBMjJpT29xc2k5bnc
Espère que vous êtes sensation de fraîcheur pour cette solution.
Plus comme propre:
Vous pouvez accepter uniquement des chiffres et des types de numéro de téléphone à l'aide de code java
Ce code permettra d'éviter beaucoup de validations après la lecture de l'entrée
Vous pouvez utiliser les apparitions de format des numéros de téléphone de Android. Cette solution est meilleure que les autres, car il ne change pas de texte de saisie. Mise en forme reste purement visuelle.
Classe de formatage:
Remplissage:
Vous avez besoin pour créer une classe:
L'utiliser comme suit: