Luca
Luca

Reputation: 833

SearchView in actionBar

I've followed this code to implement SearchView inside ActionBar (as an item inside the menu).

But when i reach this line

mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

getActionView() return a null value.

I can't figure out what is wrong.

Upvotes: 0

Views: 110

Answers (2)

Machado
Machado

Reputation: 14489

Try replacing

mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

with

mSearchMenuItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) MenuItemCompat.getActionView(mSearchMenuItem);

Upvotes: 2

Nikos Mitropoulos
Nikos Mitropoulos

Reputation: 163

Try this..

private SearchView mSearchView;

....
....

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
             // Inflate the menu items for use in the action bar
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.activity, menu);

            MenuItem searchItem = menu.findItem(R.id.action_search);
            mSearchView = (SearchView) searchItem.getActionView();
            setupSearchView(searchItem);

            return super.onCreateOptionsMenu(menu);
        }

        private void setupSearchView(MenuItem searchItem) {

            if (isAlwaysExpanded()) {
                mSearchView.setIconifiedByDefault(false);
            } else {
                searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
                        | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
            }

            mSearchView.setOnQueryTextListener(this);
         }

         public boolean onQueryTextChange(String newText) {

                //Query

                return false;
         }

         public boolean onQueryTextSubmit(String query) {

                //query

                return false;
         }

         public boolean onClose() {
                return false;
         }

         protected boolean isAlwaysExpanded() {
                return false;
         }

And don't forget to implement the searchview...

implements SearchView.OnQueryTextListener

Upvotes: 0

Related Questions