2016-06-24 5 views
0

У меня есть EditText поле и Button. У меня есть onFocusChanged, прикрепленный к полю EditText, и onClick прилагается к Button.Android: onClick и OnFocusChange взаимодействие

Таким образом, при нажатии кнопки EditText теряет фокус, а выполняется onFocusChanged, а затем выполняется onClick кнопки. Дело в том, что мне нужно проверить значение EditText, и я делаю эту проверку в onFocusChanged, но если проверка не удалась, я хочу ОТМЕНА onClick действия кнопки.

Как я могу это сделать?

+0

Возможно вы можете использовать 'TextWatcher' для проверки содержимого и включения/выключения' Button' в соответствии с состоянием проверки –

+0

Спасибо! Я это рассмотрел, но мне это не очень нравится, поэтому, если есть другой способ, я бы хотел его узнать. – Jeni

+0

Хорошо .. тогда почему бы вам не сделать валидацию в 'onClick'? Это лучший способ сделать это и самый простой, так как вы можете забыть о том, как отслеживать всех слушателей и как их отменить. –

ответ

0

Я бы предложил общий логический isValid, onFocusChange устанавливает его во все, что вы хотите, и onClick проверяет, что это логическое значение, прежде чем он что-либо сделает, Вы также должны помнить, что при изменении есть значение isValid для false.

Проблема с этим решением заключается в том, что в зависимости от планирования он может выполнять onClick перед onFocusChange (я не уверен в этом, но на всякий случай), я бы определил еще одно логическое значениеEeited, onFocusChange устанавливает его yo false, и всякий раз, когда текст редактируется, true, onClick проверяет, редактируется ли текст, прежде чем он проверяет, является ли он действительным, и он редактируется, он будет ждать этого логического события, onFocusChange должен также разбудить, кто хочет, чтобы быть включенным.

+0

Я надеялся на «родное» решение. Но, кажется, нет никого, я думаю, что я собираюсь использовать вашу идею. Это соответствует моим потребностям. Спасибо! – Jeni

Смежные вопросы