Обработка поиска оборудования для отображения представления поиска в ActionbarSherlock

Мне интересно, как это сделать: когда пользователь нажимает кнопку поиска оборудования, он открывает представление поиска на панели действий.

В основном у меня есть фрагменты активности. Один фрагмент добавляет в ActionbarSherlock поисковый просмотр, он работает нормально:

@Override
public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu,
        MenuInflater inflater) {

    if(searchView==null)
        searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());

    searchView.setQueryHint(getString(R.string.search));
    searchView.setOnQueryTextListener(this);


        menu.add(Menu.NONE, R.string.search, Menu.NONE, R.string.search)
        .setIcon(R.drawable.abs__ic_search_api_holo_light)
        .setActionView(searchView)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    super.onCreateOptionsMenu(menu, inflater);
}

Я думаю, что я также могу поймать аппаратный ключ в FragmentActivity с помощью

@Override
public boolean onSearchRequested() {

    //DO SOMETHING

    return super.onSearchRequested();
}

Но я не вижу, как открыть поиск, когда нажата кнопка поиска оборудования.

Любой намек?

Спасибо :).


person Ldev    schedule 09.07.2013    source источник


Ответы (2)


Итак, вот как мне удалось использовать ключ аппаратного поиска, чтобы открыть окно поиска в панели действий sherlock:

В моем SherlockFragmentActivity:

private Menu ABSMenu;

@Override

public boolean onCreateOptionsMenu(Menu menu) {
    ABSMenu = menu;
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onSearchRequested() {

    MenuItem mi = ABSMenu.findItem(R.string.search); // R.string.search is the id of the searchview
    if(mi!=null){
    if(mi.isActionViewExpanded())
     {
            mi.collapseActionView();
     }else 
     {
            mi.expandActionView();  
     }
    }

    return super.onSearchRequested();
}
person Ldev    schedule 17.07.2013

Вы можете развернуть представление поиска и свернуть его, как

searchView.setIconified(false); 
searchView.setIconified(true);

Таким образом, вы можете программно вызывать представление поиска

person blganesh101    schedule 16.07.2013
comment
Спасибо за вашу помощь, но я не мог использовать это, чтобы достичь того, что я хотел сделать. - person Ldev; 17.07.2013