【发布时间】:2014-05-24 10:28:43
【问题描述】:
我添加了搜索菜单项来过滤我的列表。过滤和重置过滤器一切正常。 但是当用户单击后退按钮时,我找不到重置过滤器的方法。实际上,当用户在搜索字段中添加一些文本时,第一次后退单击将隐藏键盘,第二次单击将折叠搜索字段并删除我的搜索文本......但列表仍然被过滤。 我应该怎么做才能重置列表?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.search_menu, menu);
searchMenuItem = menu.findItem(R.id.action_search);
SearchView mSearchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
if (mSearchView != null) {
mSearchView.setIconifiedByDefault(true);
mSearchView.setOnQueryTextListener(this);
}
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onQueryTextChange(String s) {
refreshSearch(s);
return false;
}
private void refreshSearch(String s) {
FragmentManager fm = getSupportFragmentManager();
MyListFragment listFragment = (MyListFragment)fm.getFragments().get(0);
MyArrayAdapter arrayAdapter = (MyArrayAdapter)listFragment.getListAdapter();
arrayAdapter.getFilter().filter(s);
}
通过添加一些额外的代码来编辑我的问题,这可能有助于了解原因
@Override
public boolean onQueryTextSubmit(String s) {
hideKeyboard();
return false;
}
@Override
public boolean onQueryTextChange(String s) {
refreshSearch(s);
return false;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_search:
return true;
default:
return false; //return super.onOptionsItemSelected(item);
}
}
【问题讨论】:
标签: java android android-actionbar searchview android-searchmanager