以编程方式为从XML创build的现有菜单创build子菜单

我已经在xml中创build了我的父菜单,现在我不知道如何在使用代码的父母下创build子菜单。 这意味着,父项在menu.xml中编码,子菜单将在数据可用时根据dynamic代码加载。

当我试图使用menu.addSubMenu它正在创build一个新的父菜单项。

Solutions Collecting From Web of "以编程方式为从XML创build的现有菜单创build子菜单"

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> 

然后在代码中:

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

okk ..你应该试试这个..

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

我知道这是一个非常古老的线程,但希望这将有助于像我这样的人有相同的要求。

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> 

然后编程你的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"); } 

希望这可以帮助。