Automatische Formatierung der Telefonnummer in EditText

8

In meiner App muss der Benutzer eine Telefonnummer in einem Feld EditText im folgenden Format eingeben:

  

1 (515) 555-5555

Ich möchte nicht, dass der Benutzer beim Eingeben der Nummer "(", ")" oder "-" eingibt. Ich möchte, dass diese Zeichen automatisch hinzugefügt werden.

Angenommen, der Benutzer tippte 1 - die Klammer nach "1" sollte automatisch hinzugefügt werden, so dass "1 (" angezeigt würde. Und ich möchte beim Löschen ähnliche Funktionen haben.

Ich habe versucht, Text in der afterTextChanged -Methode von onTextWatcher interface zu setzen, aber es funktioniert nicht; stattdessen verursacht es einen Fehler. Jede Hilfe wird sehr geschätzt.

    
Amit Kumar 21.02.2011, 10:04
quelle

2 Antworten

9

Sie stoßen wahrscheinlich auf ein Problem, weil afterTextChanged wieder einspringt, d. h. Änderungen am Text bewirken, dass die Methode erneut aufgerufen wird.

Wenn das das Problem ist, besteht die Möglichkeit, ein Flag für eine Instanzvariable beizubehalten:

%Vor%

Als Alternative könnten Sie einfach PhoneNumberFormattingTextWatcher verwenden - es tut dies nicht Formatierung, die Sie beschrieben haben, aber dann müssen Sie nicht viel tun, um es zu benutzen.

    
Mike 23.02.2011, 05:11
quelle
9

können Sie versuchen

%Vor%

Überprüfen Sie PhoneNumnerFormattingTextWatxher

Falls Sie eine eigene Implementierung von TextWatcher möchten, können Sie folgende Appraoch verwenden:

%Vor%     
Nayanesh Gupte 29.08.2013 12:34
quelle