首页 > 解决方案 > 当我在 viewpager 中更改片段时,如何在工具栏上的 searchview 上保留文本?

问题描述

说明:嗨,开发人员,我将在这里解释所有场景。我有一个活动,我放置了 viewpager,viewpager 分别显示了所有三个片段。即 FragmentA、FragmentB 和 FragmentC。我还分别将搜索视图放在每个片段上。考虑当我在 FragmentA 中并在 FragmentA 的 SearchView 上添加一些文本并从右向左滑动屏幕时它会显示 FragmentB 的情况。到目前为止,一切正常。当我回到 fragmentB 到 FragmenntA SearchView 文本在 SearchView 中清理并根据之前的可搜索项列出显示。即使它不刷新 RecyclerView 项。

这是 FragmentA 的代码

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_refresh, menu);

        Log.e(TAG,"DONE");
        menu.findItem(R.id.action_refresh).setVisible(false);

        SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
        searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
        searchView.setQueryHint("Search Make");
        searchView.setMaxWidth(Integer.MAX_VALUE);
        searchView.setIconifiedByDefault(true);
        searchView.setFocusable(true);
        searchView.setIconified(false);
        searchView.requestFocusFromTouch();

        // listening to search query text change
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                // filter recycler view when query submitted
                makeAdapter.getFilter().filter(query);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String query) {
                // filter recycler view when text is changed
                makeAdapter.getFilter().filter(query);
                return false;
            }
        });
        super.onCreateOptionsMenu(menu, inflater);
    }

在上面的代码中,我全局声明了 searchView 对象。

问题:当我从任何片段返回到 FragmentA 时,如何在 SearchView 上保留可搜索文本?当我从任何片段返回到 FragmentA 时,如何根据搜索文本刷新列表视图?

请给我一个合理的解决方案。

标签: android

解决方案


推荐阅读