SearchView's OnCloseListener doesn't work SearchView's OnCloseListener doesn't work android android

SearchView's OnCloseListener doesn't work


I also meet this problem, and I have no choice but give up "oncloselistener". Instead, you can get your menuItem, then setOnActionExpandListener. Then override unimplents methods.

@Overridepublic boolean onMenuItemActionExpand(MenuItem item) {    // TODO Auto-generated method stub    Log.d("*******","onMenuItemActionExpand");    return true;}@Overridepublic boolean onMenuItemActionCollapse(MenuItem item) {    //do what you want to when close the sesarchview    //remember to return true;    Log.d("*******","onMenuItemActionCollapse");    return true;}


For Android API 14+ (ICS and greater) use this code:

// When using the support library, the setOnActionExpandListener() method is// static and accepts the MenuItem object as an argumentMenuItemCompat.setOnActionExpandListener(menuItem, new OnActionExpandListener() {    @Override    public boolean onMenuItemActionCollapse(MenuItem item) {        // Do something when collapsed        return true;  // Return true to collapse action view    }    @Override    public boolean onMenuItemActionExpand(MenuItem item) {        // Do something when expanded        return true;  // Return true to expand action view    }});

For more information: http://developer.android.com/guide/topics/ui/actionbar.html#ActionView

Ref: onActionCollapse/onActionExpand


For this problem I came up with something like this,

private SearchView mSearchView;@TargetApi(14)@Overridepublic boolean onCreateOptionsMenu(Menu menu){    MenuInflater inflater = getMenuInflater();    inflater.inflate(R.menu.conversation_index_activity_menu, menu);    mSearchView = (SearchView) menu.findItem(R.id.itemSearch).getActionView();    MenuItem menuItem = menu.findItem(R.id.itemSearch);    int currentapiVersion = android.os.Build.VERSION.SDK_INT;    if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH)    {        menuItem.setOnActionExpandListener(new OnActionExpandListener()        {            @Override            public boolean onMenuItemActionCollapse(MenuItem item)            {                // Do something when collapsed                Log.i(TAG, "onMenuItemActionCollapse " + item.getItemId());                return true; // Return true to collapse action view            }            @Override            public boolean onMenuItemActionExpand(MenuItem item)            {                // TODO Auto-generated method stub                Log.i(TAG, "onMenuItemActionExpand " + item.getItemId());                return true;            }        });    } else    {        // do something for phones running an SDK before froyo        mSearchView.setOnCloseListener(new OnCloseListener()        {            @Override            public boolean onClose()            {                Log.i(TAG, "mSearchView on close ");                // TODO Auto-generated method stub                return false;            }        });    }    return super.onCreateOptionsMenu(menu);}