Ответ 1
Похоже, вы установили это как сворачиваемое представление действий в MenuItem. Вы можете вызвать collapseActionView() в этом экземпляре MenuItem, чтобы отправить его обратно в закрытое состояние.
Я использую виджет SearchView
, чтобы включить поиск в моем приложении. После первоначального нажатия на значок поиска виджет SearchView
расширяется в поле поиска, а рядом с значком приложения отображается стрелка "назад". Если щелкнуть значок приложения, панель действий вернется в исходное состояние (нет "назад" ), а SearchView
вернется к значку.
Теперь проблема: после того, как поиск выполнен, панель действий не изменяется, единственный способ вернуться - щелкнуть значок приложения или "назад" на телефоне. Нехорошо, так как я хочу, чтобы панель действий переходила в исходное состояние, когда поиск выполнен. Я пробовал SearchView.setIconofied(true)
, но есть 2 проблемы:
Я думаю, что проблема, с которой я столкнулась, связана с отклонениями от обычного шаблона навигации. В моем случае все происходит внутри одного и того же действия (результаты поиска отображаются в том же самом действии, что и на панели действий), поэтому, например, выполнение Activity.finish()
просто делает выход приложения.
Как мне активировать "вернуться на один шаг" панели действий? Или имитировать щелчок на значке приложения?
Похоже, вы установили это как сворачиваемое представление действий в MenuItem. Вы можете вызвать collapseActionView() в этом экземпляре MenuItem, чтобы отправить его обратно в закрытое состояние.
метод collapseActionView() работает только с уровня API 14. Если вы хотите поддерживать более ранние версии Android, вам следует использовать библиотеку MenuItemCompat.
Здесь мое решение свернуть searchview и reset панель действий...
private MenuItem searchMenuItem;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main_menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchMenuItem = menu.findItem(R.id.action_search);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
customizeSearchView(searchView);
return super.onCreateOptionsMenu(menu);
}
@Override
protected void onNewIntent(Intent intent)
{
setIntent(intent);
if (searchMenuItem != null)
{
if (MenuItemCompat.expandActionView(searchMenuItem))
{
MenuItemCompat.collapseActionView(searchMenuItem);
}
else if (MenuItemCompat.collapseActionView(searchMenuItem))
{
MenuItemCompat.expandActionView(searchMenuItem);
}
}
handleIntent(intent);
}