11
votes

Créer un sous-menu par programme pour le menu existant créé à partir de XML

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.

Lorsque j'ai essayé d'utiliser Menu.addsubmenu, il crée un nouvel élément de menu parent.


0 commentaires

3 Réponses :


5
votes

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);
    }


2 commentaires

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



10
votes

mymenu.xml: xxx

puis plus loin dans le code: xxx


0 commentaires

4
votes

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");
}


2 commentaires

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.