EditText необходимо дважды щелкнуть, чтобы открыть диалоговое окно поиска

В моем приложении есть два элемента EditText. Оба реализуют OnClickListener следующим образом:

editText1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Open search dialog
        doSomeStuff();
        }
    });

doSomeStuff() означает: нажатие на текстовое поле открывает диалоговое окно поиска через onSearchRequested(). Результат поиска записывается обратно в текстовое поле.

Это отлично работает, но если я нажму на другое текстовое поле, мне нужно дважды щелкнуть до появления диалогового окна поиска. Откуда это происходит и как я могу изменить это, чтобы диалоговое окно поиска появилось при нажатии только один раз?

Ответ 1

Для полей EditText лучше использовать OnKeyListener. С переданным в KeyEvent вы можете реагировать по-разному в зависимости от того, как поле EditText было нажато/получить фокус. В противном случае вы также можете попробовать OnFocusChangeListener или если вы хотите использовать TextWatcher для просмотра каждого добавленного символа, вы можете реализовать TextWatcher и использовать addTextChangedListener..