Reputation: 2057
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!
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
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