2016-06-23 7 views
0

Ich hatte einige Fragen zur Ausführung von Texteingabe Validierung, die der Benutzer in Android (EditText) in einem anderen Prozess eingibt. Ich weiß, idealerweise wäre es besser, es in der gleichen Anwendung zu haben, aber die Eingabe-Validierung muss auf dem anderen Prozess überprüft werden, kein Weg um diese ...Android Texteingabe Validierung auf Backend/anderen Prozess

Ich habe die Interprozess-Kommunikation bereits eingerichtet, das ist nicht ein Problem. Außerdem kenne ich den Texteingabe-Listener für den EditText immer dann, wenn ein Benutzer einen Schlüssel eingibt, so dass dies kein Problem darstellt. Hier ist das Problem, ich muss Text Validierung jedes Mal, wenn der Benutzer ein Zeichen eingibt und wenn das Zeichen Validierung nicht besteht, muss ich es so machen, dass der Charakter nie getippt wird.

Wie Sie wissen, kann ich diese Überprüfung auf dem UIhread nicht durchführen, aber gleichzeitig muss ich Benutzereingaben "verfolgen", bis die Validierung abgeschlossen ist. Wie mache ich das? Ich bin hier ein bisschen verloren. Jede Hilfe wird sehr geschätzt.

+0

Hinzufügen einer Beule ** –

Antwort

0

Also was ich stattdessen tun, ist ein Eingabefilter für die EditText-Ansicht. Dann halte ich ein paar Flags gesetzt (validiere), wenn ich den Check am Backend mache. Ich verwende dieses Flag als eine Prüfung, ob der Benutzer eine Eingabe vor der Validierung eingibt. Ich ignoriere dort die Eingabe und gebe ein leeres Zeichen zurück (das nichts von dem einfügt, was sie gefragt haben). Es ist ein bisschen klobig, aber es funktioniert.

0

Sie können versuchen, zwei Remotedienste zu verwenden - einen, um einen anderen Prozess über den Benutzer, der Text eingibt, und den anderen als Rückruf von einem Remoteprozess (in Ihrer App implementiert) zu verwenden. Sie binden den Remotedienst ein, registrieren den Rückruf (Beispiel: Google Remote-Dienst https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.java) und ändern den Bearbeitungstextstatus in diesem Rückruf. Es gibt auch eine sehr bequeme Möglichkeit, Benutzereingaben mit Hilfe der RxJava-Bibliothek zu verarbeiten. Verwenden Sie den Operator .debounce(), um den Remote-Prozess nach jedem bearbeiteten Symbol nicht zu erstellen.

+0

so habe ich eine Sparsamkeit Verbindung zu meinem anderen Prozess. Ich kann unter Verwendung meines Thrifts IF boolean value = input.validateInput (x) aufrufen, wobei 'x' das Eingabezeichen ist und bei gültiger Eingabe ein bool zurückgibt. Um dies zu tun, muss 'input.validateInput (x)' außerhalb des UI-Threads ausgeführt werden. Das einzige, was ich mir vorstellen kann, ist auf Zeicheneingabeereignis zu hören, Tastatur zu deaktivieren, Check-in separaten Thread, Post-Ergebnis in UI-Thread, die dann Tastatur aktivieren und senden Eingabe durch .... Scheint klobig. Ihre ReactiveX-Bibliothek sieht sehr interessant aus und benötigt möglicherweise viel Zeit zum Lernen. –

+0

Also habe ich mehr in das RxJava geschaut, das du erwähnt hast. Ich denke, ich werde es in anderen Bereichen verwenden, aber in dieser Situation glaube ich nicht, dass es mir hilft. Ich muss im Wesentlichen nicht zulassen, dass der Benutzer etwas eintippt, nachdem er einen Schlüssel gedrückt hat, damit ich die Überprüfung durchführen kann, und wenn der Benutzer den Text dann weitergibt, kann er weiter tippen –