PopupMenu equivalente en ActionBarSherlock

¿Cuál es el equivalente de PopupMenu en ActionBarSherlock? No puedo encontrarlo. Su API 11, ¿por qué está ausente?

La clase MenuPopupHelper prácticamente hace el trabajo. No encontré una manera fácil de escuchar los clics del artículo, así que implementé esta clase que deriva de MenuPopupHelper:

 public class MenuPopup extends MenuPopupHelper { OnMenuItemClickListener onMenuItemClickListener; public MenuPopup(Context context, MenuBuilder menu, View anchorView) { super(context, menu, anchorView); } public void setOnMenuItemClickListener( OnMenuItemClickListener onMenuItemClickListener) { this.onMenuItemClickListener = onMenuItemClickListener; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { super.onItemClick(parent, view, position, id); if (onMenuItemClickListener != null) onMenuItemClickListener.onMenuItemClick(position); } public interface OnMenuItemClickListener{ public void onMenuItemClick(int itemID); } } 

Añadido PopupMenu en ActionBarSherlock .

Estilo del PopupMenu

 <item name="popupMenuStyle">@style/PopupMenu.MyAppTheme</item> <style name="PopupMenu.MyAppTheme" parent="@style/Widget.Sherlock.ListPopupWindow"> <item name="android:popupBackground">@android:color/white</item> </style> 

Estoy trabajando en esto actualmente. Hice lo que fue sugerido por CommonsWare acerca de backporting. Básicamente tomé el código fuente de PopupMenu.java y reemplazé las importaciones de paquetes con los equivalentes de actionbarsherlock. Parece que funciona bien en los dispositivos de jengibre y ics que probé. La captura, aunque está en actionbarsherlocks MenuPopupHelper clase Tenía que hacer comentarios referencias de las líneas View_HasStateListenerSupport como:

 ((View_HasStateListenerSupport)anchor).addOnAttachStateChangeListener(this); 

por alguna razón. Si no lo hice, obtendría una ClassCastException:

E / AndroidRuntime (9197): EXCEPCIÓN FATAL: main E / AndroidRuntime (9197): java.lang.ClassCastException: android.widget.Button no se puede convertir en com.actionbarsherlock.internal.view.View_HasStateListenerSupport E / AndroidRuntime (9197): at Com.actionbarsherlock.internal.view.menu.MenuPopupHelper.tryShow (MenuPopupHelper.java:121) E / AndroidRuntime (9197): en com.actionbarsherlock.internal.view.menu.MenuPopupHelper.show (MenuPopupHelper.java:102)

No estoy seguro si comentar que el oyente podría causar problemas para otras clases que utilizan MenuPopupHelper o por qué están causando esta excepción (tal vez un error). Pero pensé que compartiría lo que intenté, por lo que puede ayudar a cualquiera que esté estudiando esto.

  • Ningún recurso encontrado al usar el estilo Theme.Sherlock
  • Barra de Acción Sherlock + ListFragments + Fragments
  • Errores en archivos de recursos cuando se usa ActionBarSherlock 4.1.0
  • Error al crear la aplicación para Android (consulte ActionBarSherlock y ViewPagerTabs) con Ant
  • Eclipse no puede encontrar Theme.Sherlock en ActionBarSherlock
  • Nueva API de Facebook 3.0. Y compatibilidad con ActionBarSherlock
  • Barra de acción Android sherlok no muestra divisor
  • Incompatibilidad de taras al importar ActionBarSherlock
  • ¿Hay alguna manera de usar nuevo DrawerLayout con ActionBarSharlock?
  • No se puede resolver la superclase de Landroid / support / v4 / app / FragmentActivity
  • No se encontró ningún recurso que coincida con el nombre dado Theme.Sherlock.Dialog
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.