【发布时间】:2015-05-16 14:24:08
【问题描述】:
我的搜索视图有问题。
我有 2 个主题,当我第一次接触 searchview 时,我得到了丑陋的第一张图片。但是当我再次进入 searchview 时,我从 2 pic 中得到了不错的主题。
我想总是选择第二种方式... 任何线索为什么会发生这种情况?
这是我初始化搜索视图的代码:
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(Menu menu) 我必须进行编辑,因为我想在 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;
}
});
【问题讨论】:
标签: java android android-activity searchview