Android – как я могу запустить проверку поля edittext

Мне нужно реализовать поле edittext, которое просто позволяет пользователю вводить от 20 до 60. Если пользователь вводит число, выходящее за пределы диапазона, появится диалоговое окно, которое заставит пользователя ввести снова.

Таким образом, наблюдатель за текстом бесполезен, потому что он не может предотвратить ввод пользователем числа меньше 20.

OnFocusChangedListener не является ни тем, ни другим, если пользователь нажимает кнопку «Готово», текст редактирования не теряет фокус, поэтому триггер также не срабатывает.

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

Если у вас есть какие-либо идеи по этому поводу, пожалуйста, поделитесь со мной.

Большое спасибо.


person thanhbinh84    schedule 11.05.2011    source источник


Ответы (3)


Элвин прав... это мой код, чтобы что-то делать с введенным текстом, но с таким же успехом он мог бы быть последовательностью проверки:

smsMsgBody_editText.addTextChangedListener(new TextWatcher() {
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // Do something fancy
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
    public void afterTextChanged(Editable s) { }
});
person Bill Mote    schedule 11.05.2011
comment
@Элвин Тогда @Джейдип Хамар. Как я уже упоминал в своем вопросе, наблюдатель за текстом бесполезен, если ввод пользователя меньше 20. Например, когда пользователь вводит 8 и нажимает кнопку «Готово» или переходит на другую вкладку, наблюдатель за текстом не может помочь, правильно ? - person thanhbinh84; 12.05.2011
comment
Вы можете абсолютно использовать приведенный выше код для проверки. Вы также можете проверить свои поля, добавив вызов метода в onClick() для кнопки «Готово» или то же самое для tabHost.setOnTabChangedListener(new OnTabChangeListener(){ public void onTabChanged(String tabId) { doValidation(); }}); - person Bill Mote; 12.05.2011
comment
В настоящее время я делаю так, однако вокруг него есть больше элементов, таких как панель действий, панель меню, поэтому мне нужно поместить свою проверку внутри тех элементов, которые не так хороши... Я ищу лучшее решение, если Любые. - person thanhbinh84; 13.05.2011

Как насчет отслеживания поля EditText с помощью onTextChanged?

person Yaobin Then    schedule 11.05.2011
comment
Убедитесь, что вы обрабатываете нажатие клавиши удаления, когда EditText пусто: stackoverflow.com/a/13983097/832776 - person Oleg Vaskevich; 21.12.2012

использовать эти

android:maxLength="2" android:numeric="integer"

затем, когда вы получаете число, например: number.gettext(), вы делаете проверки, например, если число> 60 и меньше 20, вы можете сделать number.setHint("number no valid");

person PedroAGSantos    schedule 11.05.2011
comment
спасибо subspider, но проблема в том, как запустить проверку - person thanhbinh84; 12.05.2011