user6011904
user6011904

Reputation:

searchview oncloselistener not working

I need to have oncloselistener for my searchview in a menu, but oncloselistener is not working. I am not sure how to set actionexpand to my searchview.

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    final SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setQueryHint("جستجو...");
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    return super.onOptionsItemSelected(item);
}

Upvotes: 2

Views: 1585

Answers (1)

RominaV
RominaV

Reputation: 3425

I had the same issue last week! To my surprise, you don't set the listener to the SearchView, you actually set it to the menu item that expands it. This is exactly what I had to do in onCreateOptionsMenu:

        item = menu.findItem(R.id.friend_fragment_search_icon);
        searchView = (SearchView) MenuItemCompat.getActionView(item);

        // When using the support library, the setOnActionExpandListener() method is
// static and accepts the MenuItem object as an argument
        MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                //the searchview has been closed
                return true;  // Return true to collapse action view
            }

            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                mBtnFindFriends.hide();
                return true;  // Return true to expand action view
            }
        });

The friend_fragment_search_icon is the menu icon that opens the SearchView. menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:dingding="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/friend_fragment_search_icon"
        android:title="@string/search_title"
        android:icon="@drawable/ic_search_white_48dp"
        dingding:showAsAction="always|collapseActionView"
        dingding:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

Upvotes: 5

Related Questions