Wie verwende ich AsYouTypeFormatter TextWatcher in der Android App?

8

Ich versuche den AsYouTypeFormatter aus der Libphonummer von Google mit TextWatcher zu verwenden und bin mir nicht sicher, ob das möglich ist. Ich war in der Lage, den Text wie getippt von einem EditText-Feld zu formatieren und es in einem anderen EditText auszugeben, aber nicht in der Lage, das ursprüngliche EditText-Feld direkt zu ändern (was ich will). Ich weiß über den phoneNumberFormattingTextWatcher, aber wir wollen, dass der Benutzer schließlich in der Lage sein kann, in welchem ​​Gebietsschema er sich befindet, und mehr Kontrolle zu haben, als das, was erlaubt (von dem, was ich gesammelt habe).

Nach oben:

%Vor%

Zuerst initialisiere ich den AsYouTypeFormatter am Anfang meiner Klasse:

%Vor%

Nachdem meine Tabs und so erstellt wurden, erstelle ich ein EditText-Feld, formatiere die vorhandene Telefonnummer darin (was funktioniert) und füge den Listener hinzu (was die aktuelle Klasse ist):

%Vor%

Das habe ich im Moment in meinen TextWatcher-Funktionen, ich bin mir aber nicht sicher, in welcher dieser Funktionen mein Code sein sollte:

%Vor%

Hier ist ein Beispiel der geloggten Ausgabe, also weiß ich, dass die Formatierung funktioniert:

%Vor%

Und hier ist das Bild der Ausgabe (oben EditText ist phoneNumberText und unten ist testPhoneNumberText): Ссылка

Was ich wissen möchte ist, wie bekomme ich die formatierte Ausgabe zurück in den ursprünglichen EditText, während es getippt wird? Wenn ich es versuche, passieren seltsame Dinge wie Duplikation oder es wird nur unformatiert angezeigt. Ich habe versucht, am replace () zu verwenden, aber ich bin nicht sicher, ob ich es richtig verwende. Ist das möglich? Danke?

    
sugarwaffle 03.01.2013, 16:18
quelle

2 Antworten

3

Ich habe am Ende einen neuen String deklariert:

%Vor%

Dann ändere ich meinen Code zu diesem:

%Vor%

}

Es scheint, dass der aytf nicht in der Lage war, bereits teilweise formatierte Telefonnummern zu formatieren, so dass ich alle Nicht-Ziffern entfernen musste, bevor ich erneut zu aytf reichte? Das einzige Problem, das jetzt noch besteht, ist, dass der Cursor im EditText-Feld jetzt am Anfang und nicht am Ende steht, aber das sollte kein Problem sein. Yay.

BEARBEITETER CODE:

%Vor%     
sugarwaffle 03.01.2013, 19:04
quelle
4

Für andere da draußen, die einfach eine vom Benutzer eingegebene Telefonnummer in einem EditText formatieren möchten, wie der Benutzer tippt, ist es viel einfacher, PhoneNumberFormattingTextWatcher (in Android integriert) zu verwenden, als eine dieser ausführlichen Antworten zu versuchen - und es ist eine Zeile CODE!

%Vor%

Sie können auch die Region übergeben, die der Benutzer ausgewählt hat, was meiner Meinung nach die Frage des OP beantworten würde, aber bis API 21 nicht verfügbar war:

%Vor%     
DiscDev 17.03.2015 20:40
quelle