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

Hun*_*unt 8 android menu

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

当我尝试使用menu.addSubMenu时,它正在创建一个新的父菜单项.

Las*_*sen 7

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>
Run Code Online (Sandbox Code Playgroud)

然后在代码中:

@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);
}
Run Code Online (Sandbox Code Playgroud)


And*_*oid 5

好的..你应该试试这个..

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);
    }
Run Code Online (Sandbox Code Playgroud)