Кнопка «Назад» не сворачивает SearchView

У меня есть android.support.v7.widget.SearchView, живущий на моей панели инструментов AppCompat.

Я нажимаю кнопку «Поиск», чтобы развернуть ActionView MenuItem, и все в порядке, пока я не нажму аппаратную кнопку «Назад» на устройстве. Это скроет клавиатуру, и EditText SearchView потеряет фокус, и его курсор исчезнет, ​​но элемент не сворачивается обратно к значку поиска. Вместо этого пункт меню справа от значка поиска становится сфокусированным/выделенным, что... неправильно. Повторное нажатие не помогает.

Я пытался определить клавишу возврата различными способами, например, добавив OnKeyListener либо в SearchView, либо в его EditText, но он не срабатывает. Нажатие кнопки «Вверх» на панели действий делает именно то, что мне нужно, поэтому мне просто нужно обнаружить кнопку «Назад».

Единственное, что странно в моей настройке, это то, что самого SearchView нет в макете - если я добавлю его, он успешно строится, но падает во время выполнения. По какой-то причине.

У меня есть слушатель для развертывания/свертывания, свертывание обнаруживается только при нажатии кнопки «Вверх», оно не срабатывает при нажатии кнопки «Назад».

Спасибо

Вот мой код настройки SearchView:

MenuItemCompat.setShowAsAction(menuItem, MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
final SearchView searchView = new MyobSearchView(activity);
MenuItemCompat.setActionView(menuItem, searchView);
MenuItemCompat.setOnActionExpandListener(menuItem, new FocusSearchFieldActionExpandListener(searchView, androidUtils));

person Community    schedule 07.01.2016    source источник


Ответы (1)


Вы можете сделать это, переопределив метод onBackPressed() следующим образом:

@Override
public void onBackPressed() {
        // do what you want
}
person Joel Min    schedule 07.01.2016
comment
Предположительно в деятельности? - person ; 07.01.2016
comment
Ага. В деятельности. - person Joel Min; 07.01.2016
comment
OnBackPressed действия не вызывается при расширении SearchView. Так что я не верю, что это ответ - person Pat Long - Munkii Yebee; 04.01.2017
comment
onBackPressed() не вызывается, когда отображается клавиатура .... это не ответ. - person Sakiboy; 11.04.2017