J'ai créé mes menus parents dans XML, je ne sais maintenant pas comment créer sous-menus sous ces parents en utilisant le code. Cela signifie que les parents sont codés dans menu.xml et sous-menus seront chargés en fonction d'un code dynamique comme et lorsque les données sont disponibles. P>
Lorsque j'ai essayé d'utiliser Menu.addsubmenu, il crée un nouvel élément de menu parent. P>
3 Réponses :
okk .. Vous devriez essayer cela ..
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); }
Eh bien, vous créez ici tout dans un code, mais je souhaite utiliser des éléments de menu existants, ceux-ci sont spécifiés dans XML et sous celui que je souhaite créer un sous-menu.
Apparemment, l'auteur de cette réponse n'a pas lu la question et a donné une réponse qui ne résolvait même pas le problème initial
mymenu.xml: puis plus loin dans le code: p>
Je sais que c'est un très vieux fil, mais j'espère que cela aidera les autres comme moi qui avaient la même exigence.
menu / films.xml code>: p>
@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");
}
Comment ajouter Cliquez sur Soutailer sur le sous-menu (action et comédie).
@Gundubandagar à ONOPTIONSITEMMELLECIDE. Obtenez l'identifiant du menu pressé IE. menuitem.getid. Ensuite, utilisez-le, si cet identifiant, vérifiez si cet identifiant est égal au menu Action ou Comedy et effectuez le processus en conséquence.