恢复活动后在SearchView中保留查询

时间:2016-04-19 14:35:35

标签: android search android-activity searchview

我有一个带有ListView和clickeable项的Activity,用于在单独的Activity中显示每个项的详细信息。我的主要活动有一个SearchView来过滤这些项目。我希望能够点击一个项目(打开一个新活动),当我按下后退按钮时,我的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并使用我的查询进行过滤,但在此之后,另一个调用带有空搜索!我不知道它来自何处。

有任何帮助吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我很高兴这可以提供帮助:

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