我的搜索视图出现问题。
我有两个主题,当我第一次触摸searchview时,我得到了丑陋的第一张照片。但是当我再次进入searchview时,我从2张图片中获得了很好的主题。
我想永远得到第二种方式...... 任何线索为什么会发生这种情况?
以下是我的搜索视图初始化代码:
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;
}
谢谢!
修改
在@huangming的帮助下,我编辑了我的代码。现在它就像一个魅力:)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId) {
case R.id.search:
onSearchRequested();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
在我的onCreateOptionsMenu(菜单菜单)中 我必须编辑,因为我想在Bundle中发送自定义值以供我的SearchActivity进行管理。
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;
}
});
答案 0 :(得分:1)
您有以下代码吗?
尝试删除代码onSearchRequested();
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId) {
case R.id.search:
onSearchRequested();
return true;
default:
return super.onOptionsItemSelected(item);
}
}