Я пишу приложение с 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
по-прежнему работает - не знаю почему.
Буду признателен за разъяснение, какое решение является наиболее подходящим в том случае, если я намерен работать с моим приложением только на ощупь, и в случае, я намерен работать с каждым методом ввода. Кроме того, кажется, я не совсем уверен в значении выбранного состояния представления, поэтому объяснение этого также будет полезно.
Спасибо.