Nacho
Nacho

Reputation: 2057

SearchView theme changing

I'm having a problem with my search view.

I get 2 themes, when i first touch on searchview, i get the ugly first picture. But when i enter in searchview again, i get the nice theme from the 2 pic.

I want to get always the second way... Any clue why this happens?

Here is my code to initialize my searchview:

private void setupSearchView(MenuItem searchItem) {
    searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
            | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
}

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

    MenuItem searchItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) searchItem.getActionView();
    setupSearchView(searchItem);
    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            startSearch(null,true,null,false);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            return false;
        }
    });

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    return true;
}

Thanks!

enter image description here enter image description here

EDIT

With help of @huangming i edited my code. Now it works like a charm :)

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId) {
        case R.id.search:
            onSearchRequested();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

And in my onCreateOptionsMenu(Menu menu) I had to edit, because i wanted to send custom values in Bundle for my SearchActivity to manage it.

final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        //mSearchView = (SearchView) searchItem.getActionView();
        mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        setupSearchView(searchItem);
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                Bundle b = new Bundle();
                final SharedPreferences prefs = getSharedPreferences("pref", Context.MODE_PRIVATE);
                int somevalue = prefs.getInt("value", 0);
                b.putInt("value", somevalue);
                searchManager.startSearch("", true, searchManager.getGlobalSearchActivity(), b, false);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                return false;
            }
        });

Upvotes: 0

Views: 107

Answers (1)

huangming
huangming

Reputation: 176

Have you got the following code? Try to delete the code onSearchRequested();

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId) {
        case R.id.search:
            onSearchRequested();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

Upvotes: 1

Related Questions