setSelected (false) против clearFocus: что является более подходящим? - PullRequest
0 голосов
/ 03 мая 2020

Я пишу приложение с SearchView. Я хочу, чтобы в тот момент, когда пользователь отправляет запрос на поиск, фокус / выбор (я не уверен в терминологии) покидает SearchView, поэтому, когда пользователь нажимает кнопку «Назад», открытый фрагмент результата поиска немедленно закрывается. Прямо сейчас, первое нажатие на кнопку «назад» «покидает» SearchView, и только при следующем нажатии результат поиска закрывается.

Теперь я обнаружил, что если я добавлю следующий фрагмент кода, то я произойдет поиск:

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            searchView.clearFocus();

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });

Но потом я обнаружил, что переключение clearFocus() с setSelected(false) также будет работать.

Я прочитал, что фокус связан с использованием физической клавиатуры, трекбол и др. c. Я тестирую свое приложение на своем физическом смартфоне, используя только касание. В конфигурации с возможностью поиска для focusableInTouchMode не задано значение true, и clearFocus по-прежнему работает - не знаю почему.

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

Спасибо.

...