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
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);}