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:
- Botón de acción flotante y error de inflación de biblioteca de diseño
- Deshabilitar haga clic en RecyclerView dentro de un SwipeRefreshLayout
- Prevenir CollapsingToolbarLayout colapsar si no es necesario
- Cómo mostrar los elementos de acción en la parte inferior mediante la barra de herramientas
- ¿Cuál es el caso de uso de ContextCompat.checkSelfPermission?
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?
- Cómo utilizar Contextual Actionbar (CAB) con support.v7.widget.Toolbar y Listview?
- Cómo recurrir completamente a SortedList de RecyclerView
- Android -RecyclerView en kitkat
- Configuración del comportamiento del botón de acción flotante mediante programación
- La llamada requiere el nivel 23 de API (el min actual es 14): android.app.Activity # requestPermissions, checkSelfPermission
- ¿Cómo utilizar NumberPicker en la aplicación de Android con API 7?
Com.android.support:support-annotations:26.0.0-alpha1 ha dejado la versión alfa. Prueba a actualizar a com.android.support:support-annotations:26.0.0
https://developer.android.com/topic/libraries/support-library/packages.html#annotations