No se puede establecer OnActionExpandListener: Esto no es compatible, use MenuItemCompat.setOnActionExpandListener ()

Esto suena como una pregunta duplicada, pero no lo es.

Estoy intentando fijar un OnActionExpandListener a mi artículo del menú de la búsqueda:

 public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_country_picker, menu); MenuItem menuItem = menu.findItem(R.id.search); menuItem.setOnActionExpandListener(this); //more code return true; } 

Cuando ejecuto eso, recibo esta excepción:

 java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener() at android.support.v7.view.menu.MenuItemImpl.setOnActionExpandListener(MenuItemImpl.java:743) at com.myapp.pages.country_picker.CountryPickerActivity.onCreateOptionsMenu(CountryPickerActivity.java:59) at android.app.Activity.onCreatePanelMenu(Activity.java:3145) at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:320) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:92) at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:331) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:92) at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454) at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6121) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 

Cool, vamos a utilizar MenuItemCompat.setOnActionExpandListener() entonces!

Esto es lo que obtengo cuando reemplazo menuItem.setOnActionExpandListener(this); Con MenuItemCompat.setOnActionExpandListener(menuItem, this); :

 java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener() at android.support.v7.view.menu.MenuItemImpl.setOnActionExpandListener(MenuItemImpl.java:743) at android.support.v4.view.MenuItemCompat.setOnActionExpandListener(MenuItemCompat.java:363) at com.myapp.pages.country_picker.CountryPickerActivity.onCreateOptionsMenu(CountryPickerActivity.java:57) at android.app.Activity.onCreatePanelMenu(Activity.java:3145) at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:320) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:92) at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:331) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:92) at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454) at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6121) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 

TLDR:

Tratando de usar A: Esto no es compatible, use B.

Tratando de usar B: Esto no es compatible, use B.

Algunos de mis build.gradle config que podrían ser relevantes:

 compileSdkVersion 23 buildToolsVersion '25.0.2' defaultConfig { minSdkVersion 21 targetSdkVersion 23 } dependencies { compile 'com.android.support:support-v4:23.4.0' androidTestCompile 'com.android.support:support-annotations:26.0.0-alpha1' ... } 

PS: MenuItemCompat.setOnActionExpandListener() está obsoleto y los docs recomiendan usar MenuItem.setOnActionExpandListener(MenuItem.OnActionExpandListener , que es lo que intenté en primer lugar, pero como puedes ver, no funcionó.

¿Algunas ideas?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.