2016-06-23 1 views
0

У меня возникли вопросы по проверке ввода текста, которые пользователь вводит в Android (EditText) в другом процессе. Я знаю, в идеале, было бы лучше иметь его в рамках одного и того же приложения, но проверка правильности ввода должна быть проверена на другом процессе, никоим образом не обойти это ...Проверка ввода текста в тексте на внешнем сервере/другом процессе

У меня уже есть настройка взаимодействия между процессами, проблема. Кроме того, я знаю слушателя ввода текста для EditText всякий раз, когда пользователь вводит ключ, поэтому это не проблема. Вот проблема: мне нужно запускать проверку текста каждый раз, когда пользователь вводит символ, и если символ не проходит проверку, мне нужно сделать так, чтобы символ никогда не вводился.

Как вы знаете, я не могу выполнить эту проверку в потоке пользовательского интерфейса, но в то же время мне нужно ввести «hault» пользователя, пока проверка не будет завершена. Как мне это сделать? Я немного потерялся здесь. Любая помощь приветствуется.

+0

добавление удар ** –

ответ

0

Так что вместо этого я устанавливаю входной фильтр на экране EditText. Затем я сохраняю некоторые флаги, установленные (проверяются), когда я делаю проверку на заднем конце. Я использую этот флаг как проверку, если пользователь вводит ввод до завершения проверки. Я игнорирую там вход и возвращаю пустой символ (который ничего не добавляет к тому, что они просили). Его немного неуклюже, но он работает.

0

Вы можете попробовать использовать две удаленные службы - одну для передачи другому процессу о вводе пользователем текста, а другую - в качестве обратного вызова из удаленного процесса (реализованного в вашем приложении). Вы связываетесь с удаленной службой, регистрируете обратный вызов (пример службы удаленной связи Google https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.java) и изменяете состояние редактирования текста в этом обратном вызове. Существует также очень удобный способ обработки пользовательского ввода с использованием библиотеки RxJava. Используйте оператор .debounce(), чтобы не удалять удаленный процесс после каждого отредактированного символа.

+0

поэтому у меня есть бережное отношение к другому процессу. Я могу позвонить, используя my thrfit IF, boolean valid = input.validateInput (x), где «x» - это входной символ и возвращает bool, если действительный ввод или нет. Очевидно, что для этого «input.validateInput (x)» он должен выполняться за пределами потока пользовательского интерфейса. Единственное, что я могу придумать, это прослушать событие ввода символов, отключить клавиатуру, выполнить проверку в отдельном потоке, опубликовать результат в потоке пользовательского интерфейса, который затем включит клавиатуру и отправит вход через .... Казалось бы неуклюжим. Ваша библиотека ReactiveX выглядит очень интересно, может потребоваться хороший кусок времени для изучения. –

+0

Итак, я больше смотрел на эту RxJava, о которой вы говорили. Я думаю, что буду использовать его в других областях, но в этой ситуации я не думаю, что это помогает мне. Мне нужно, по сути, не позволять пользователю вводить что-либо после того, как они нажмут ключ, чтобы я мог выполнить проверку, а затем, если она пройдет, разрешите пользователю продолжать печатать –