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.

  • Uso de los colores para el nuevo tema de diseño de material en Android
  • Cómo obtener el índice seleccionado de un grupo de radio en Android
  • Flechas personalizadas sin imagen: Android
  • Xml extraer elementos del analizador xml
  • Almacenamiento de dimensiones en un archivo xml en Android
  • Creación de hashmap / map desde recursos XML
  • ¿Cómo hacer el borde inferior en formato XML seleccionable selector?
  • ¿Cuál es el significado de xmlns: herramientas en el diseño de Android XML?
  • 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.