Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Analizar el menú de Android del recurso XML a la lista de objetos

No puedo resolver este problema durante 3 días. Tengo recurso XML simple para el menú

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/categoryEditButton" android:title="@string/edit" android:icon="@drawable/edit" /> <item android:id="@+id/categoryMoveUpButton" android:title="@string/move_up" android:icon="@drawable/up" /> <item android:id="@+id/categoryMoveDownButton" android:title="@string/move_down" android:icon="@drawable/down" /> <item android:id="@+id/categoryDeleteButton" android:title="@string/delete" android:icon="@drawable/trash" /> </menu> 

Quiero recibir List <MenuItem> después de analizar este XML:

 public class MenuItem { private CharSequence text; private Drawable image; private int actionTag; //... getters and setters ... } 

Necesito esto para manipulaciones no estándar con MenuItems y no puedo trabajar con este recurso con métodos estándar como:

 ... MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.some_menu, menu); ... 

¿Puede alguien ayudarme con esto? Gracias.

  • Cómo establecer el comportamiento de comprobación compartida en todos los grupos en NavigationView?
  • La imagen de fondo salta cuando la barra de direcciones oculta iOS / Android / Mobile Chrome
  • ¿Cómo tomar la captura de pantalla de la página de actividad ENTERO mediante programación?
  • ¿Cómo puedo mover una imagen de un punto a otro mediante Android Canvas?
  • Android no puede usar hdmi en la pestaña creativa y necesita ser notificado en todos los dispositivos (máximo) tan pronto como hdmi esté conectado
  • Inicio de sesión único para Android Facebook
  • 3 Solutions collect form web for “Analizar el menú de Android del recurso XML a la lista de objetos”

    Puede cambiar fácilmente elementos de menú en tiempo de ejecución .

    Actualizar después del comentario:

    1. Analizar XML para obtener ID de recursos y tipos de recursos (imágenes, cadenas, dibujos, etc.)

    2. Acceda a los recursos a través de la clase Resources . Cada tipo de recurso tiene un método diferente para acceder a él.

    Esto ayudará:

     ... PopupMenu p = new PopupMenu(this, null); Menu menu = p.getMenu(); getMenuInflater().inflate(R.menu.some_menu, menu); //Usage of menu System.out.println("LOG id: "+ menu.getItem(0).getItemId()); System.out.println("LOG title: "+ menu.getItem(0).getTitle()); System.out.println("LOG icon: "+ menu.getItem(0).getIcon()); ... 

    La creación de un PopupMenu es sólo un truco para crear un objeto de menú que cuando se infla se llena con la información definida en su xml.

    Gracias Raúl. No funciona para 2.33. He encontrado la solución Aquí .

     private Menu newMenuInstance(Context context) { try { Class<?> menuBuilderClass = Class.forName("com.android.internal.view.menu.MenuBuilder"); Constructor<?> constructor = menuBuilderClass.getDeclaredConstructor(Context.class); return (Menu) constructor.newInstance(context); } catch (Exception e){ MyLog.GetMyLog().e(e); } return null; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.