通过代码在Android中创建子菜单

通过代码在Android中创建子菜单,android,android-layout,Android,Android Layout,我使用XML文件在Android中创建子菜单。但是我想使用编程代码创建它 是否有可能创建 我怎样才能做到呢 谢谢。请检查以下内容: 希望对您有所帮助。子菜单是对菜单项进行分组的另一种方式 我将展示如何创建、添加项目和处理项目选择 创建子菜单并添加项目: @Override public boolean onCreateOptionsMenu(Menu menu) { SubMenu fileMenu = menu.addSubMenu("File"); f

我使用XML文件在Android中创建子菜单。但是我想使用编程代码创建它

是否有可能创建

我怎样才能做到呢

谢谢。

请检查以下内容:


希望对您有所帮助。

子菜单是对菜单项进行分组的另一种方式

我将展示如何创建、添加项目和处理项目选择

创建子菜单并添加项目:

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    SubMenu fileMenu = menu.addSubMenu("File");
            fileMenu.add(FILE, NEW_MENU_ITEM, 0, "new");
    ...
处理子菜单项选择

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case NEW_MENU_ITEM:
        doSomething();
        break;
     ...
这些简单的代码片段展示了如何创建和使用子菜单。 我还将发布整个示例。复制到IDE并运行它:

此代码正在运行

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;

/**
 * Class which shows how to work with Submenus
 *
 * @author FaYna Soft Labs
 */
public class Main extends Activity {

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 void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

@Override
public boolean onCreateOptionsMenu(Menu 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);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case NEW_MENU_ITEM:
        showMsg("New");
        break;
    case SAVE_MENU_ITEM:
        showMsg("Save");
        break;
    case UNDO_MENU_ITEM:
        showMsg("Undo");
        break;
    case REDO_MENU_ITEM:
        showMsg("Redo");
        break;
    }
    return super.onOptionsItemSelected(item);
}

private void showMsg(String message) {
    Toast msg = Toast.makeText(Main.this, message, Toast.LENGTH_LONG);
    msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2,
            msg.getYOffset() / 2);
    msg.show();
}
}

感谢您宝贵的重播。如果正在显示子菜单,在方向更改后,它将被销毁,您的菜单将消失。有没有一个好方法可以保存子菜单?嗨,伯尼,你找到保存子菜单的方法了吗?