Crear submenús de forma programática para el menú existente creado a partir de XML
He creado mis menús de los padres en xml, ahora no sé crear submenus debajo de esos padres que usan código. Esto significa que los padres están codificados en menu.xml y los submenús se cargarán basándose en un código dinámico a medida que los datos estén disponibles.
Cuando intenté usar menu.addSubMenu está creando un nuevo artículo del menú del padre.
- ¿Cómo puedo cambiar el fondo del menú Opciones para Android 2.3?
- Elementos del submenú de la barra de acciones Android mostrados en la parte superior de la barra de acción en lugar de debajo de la barra
- Reducir los elementos del menú anchura, altura y tamaño de texto
- Simple_list_item_2 en Android
- Menú Android Título del elemento que no se muestra
- ¿Cómo cambiar el ancho del elemento de menú desbordamiento barra de acción sherlock?
- Analizar el menú de Android del recurso XML a la lista de objetos
- Desactivar grupo de menús de Android
- Menús emergentes de Android
- Cambiar el color de fondo del menú android
- Cómo manejar ShareActionProvider evento onClick
- Android: mantener abierto el menú de opciones
- Cómo ocultar el menú de opciones?
Mymenu.xml:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menubutton_submenuButton" android:showAsAction="always"/> <menu> <!-- empty submenu, filled programatically --> </menu> </item> </menu>
Luego más tarde en el código:
@Override public boolean onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.mymenu, menu); MenuItem menuItem = menu.findItem(R.id.menubutton_submenuButton); SubMenu subMenu = menuItem.getSubMenu(); // @todo: add submenu items programmatically here. return super.onCreateOptionsMenu(menu, inflater); }
Ok, deberías probar esto
private static final int FILE = 0; private static final int EDIT = 1; private static final int NEW_MENU_ITEM = Menu.FIRST; private static final int SAVE_MENU_ITEM = NEW_MENU_ITEM + 1; private static final int UNDO_MENU_ITEM = SAVE_MENU_ITEM + 1; private static final int REDO_MENU_ITEM = UNDO_MENU_ITEM + 1; @Override public boolean onCreateOptionsMenu(Menu menu) { Log.i("this is test ", "oncreate option menu is called"); // menu.add("this is first menu"); // menu.add("this is second menu"); // SubMenu fileMenu = menu.addSubMenu("File"); SubMenu editMenu = menu.addSubMenu("Edit"); fileMenu.add(FILE, NEW_MENU_ITEM, 0, "new"); fileMenu.add(FILE, SAVE_MENU_ITEM, 1, "save"); editMenu.add(EDIT, UNDO_MENU_ITEM, 0, "undo"); editMenu.add(EDIT, REDO_MENU_ITEM, 1, "redo"); return super.onCreateOptionsMenu(menu); }
Sé que este es un hilo muy antiguo, pero espero que esto ayude a otros como yo que tenía el mismo requisito.
menu/movies.xml
:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <group> <item android:id="@+id/action_filter" android:showAsAction="never" android:title="Filter"> <menu> <group android:menuCategory="container"> <item android:id="@+id/action_genre" android:title="Genre"> <menu> <group android:checkableBehavior="single" /> </menu> </item> </group> </menu> </item> </group> </menu>
Luego programáticamente en su activity/fragment
:
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.movies, menu); MenuItem menuItem = menu.findItem(R.id.action_filter).getSubMenu().findItem(R.id.action_genre).getSubMenu().add(Menu.NONE, 1, Menu.NONE, "Action"); MenuItem menuItem = menu.findItem(R.id.action_filter).getSubMenu().findItem(R.id.action_genre).getSubMenu().add(Menu.NONE, 2, Menu.NONE, "Comedy"); }
Espero que esto ayude.
- Modelo de autenticación para la aplicación de Android
- Barra de herramientas Android desaparece durante el desplazamiento con Coordinatorlayout