恢复后在 SearchView 中保留查询 activity

Persist query in SearchView after resuming activity

我有一个 Activity,带有 ListView 和可点击的项目,可以在单独的 Activity 中显示每个项目的详细信息。我的主要 activity 有一个 SearchView 来过滤这些项目。我希望能够点击一个项目(打开一个新的 activity),当我按下后退按钮时,我的 searchView 保持不变(与我的过滤列表)。

我是这样实现我的搜索视图的:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    // Inflate menu to add items to action bar if it is present.
    inflater.inflate(R.menu.menu_main, menu);
    final MenuItem searchItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) searchItem.getActionView();
    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            Log.w("SEARCH", "SearchOnQueryTextSubmit: " + query);
            mQuery = query;
            if (!mSearchView.isIconified()) {
                mSearchView.setIconified(true);
            }
            searchItem.collapseActionView();
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            Log.w("SEARCH", "SearchOnQueryTextChanged: " + s);
            mQuery = s;
            contactAdapter.getFilter().filter(s);

            return false;
        }
    });

我试图在 onResume 或同一个 onCreateOptionsMenu 上实现一些东西来检查 mQuery 是否有东西。

if (!TextUtils.isEmpty(mQuery)) {
        final String thisQuery = mQuery;
        mSearchView.post(new Runnable() {
            @Override
            public void run() {
                Log.d(TAG, "onResume: setting mQuery to searchView");
                Log.d(TAG, "mQuery: "+thisQuery);
                MenuItemCompat.expandActionView(searchItem);
                mSearchView.setQuery(thisQuery, true);
            }
        });
    }

两种方法都试过了,但都没有成功。在 onCreateOptionsMenu 上,如果我对其进行调试,则会调用 SearchView 并过滤我的查询,但紧接着,另一个调用会出现空搜索!我不知道这是从哪里来的。

有什么帮助吗?谢谢!

很高兴这对您有所帮助:

您需要的是How to maintain the previous state of an activity。在此处检查所选答案 -