展开搜索视图操作栏并将文本放入其中

时间:2018-02-22 16:34:42

标签: android android-fragments searchview

我在actionbar中实现了searchview,它运行正常。在viewpager中如果用户在片段之间切换我想保持searchview的状态,那么只要片段切换我应用查询并在回收器中显示搜索结果,直到现在它像魅力一样工作,除了我想扩展我的searchview并查询它在片段改变方法上。我已经看到很多线程,我已经应用了多个解决方案,没有工作。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/action_search"
    android:icon="@drawable/ic_search_black_24dp"
    app:showAsAction="always|collapseActionView"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:title="Search"/>
</menu>

在onCreateOptionsMenu中,我正在给我的菜单充气。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.main2, menu);
    this.menu = menu;
    searchActionBar(menu);
    super.onCreateOptionsMenu(menu, inflater);
}

在搜索操作栏中,我将获取查询结果并将查询文本保存到mQuery,并在搜索视图崩溃时清除此文本。

private void searchActionBar(Menu menu){

    searchViewItem = menu.findItem(R.id.action_search);

    searchViewAndroidActionBar = (SearchView) MenuItemCompat.getActionView(searchViewItem);

    searchViewAndroidActionBar.setIconifiedByDefault(false);

    searchViewAndroidActionBar.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @SuppressLint("RestrictedApi")
        @Override
        public boolean onQueryTextSubmit(String query) {
            searchViewAndroidActionBar.clearFocus();
            mQuery = query;
            fetchSearchResult(query);
            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
          return true;
        }
    });

    MenuItemCompat.setOnActionExpandListener(searchViewItem, new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            return true;
        }

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

如果我想在searchview中设置任何查询,则在viewpager中进行片段切换时会调用此函数。但是searchview没有扩展。虽然查询提交功能正在运行。

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isResumed() && isVisibleToUser) {
        if (searchViewAndroidActionBar != null) {
            searchViewAndroidActionBar.setFocusable(true);
            searchViewAndroidActionBar.setQuery(mQuery,true);           
        }
    }

}

任何帮助都将不胜感激。

0 个答案:

没有答案