java - 单击返回时在 SearchView 中重置搜索

标签 java android android-actionbar searchview android-searchmanager

我添加了搜索菜单项来过滤我的列表。过滤和重置过滤器一切正常。 但是当用户单击后退按钮时,我找不到重置过滤器的方法。实际上,当用户在搜索字段中添加一些文本时,第一次后退单击将隐藏键盘,第二次单击将折叠搜索字段并删除我的搜索文本......但列表仍然被过滤。 我应该怎么做才能重置列表?

@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);
    }
}

最佳答案

我通过这样做解决了问题:

searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            refreshSearch("");
            return true;
        }
    });

关于java - 单击返回时在 SearchView 中重置搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843910/

相关文章:

java - Eclipse 不再显示更改了哪些类

android - 使用 lambda 创建我自己的监听器

android - 如何在构建时让Gradle下载服务器指定版本的依赖项

android - 检测 Android 导航栏方向

android - 以编程方式更改 Android Overflow 菜单图标

java - 如何在没有服务器的情况下测试我的 Struts 1.2 Web 应用程序?

java - 构造一个 jar ?

android - 如何收听 webview url 单击和启用/禁用操作栏上的按钮

Android action Bar 自定义

Java "self"(静态)引用