2

我制作了操作栏 sherlock 应用程序,并在单击并显示顶部栏操作栏 shelock 时打开子菜单,但在设备菜单上单击未打开内部操作栏 shelock 的子菜单,请帮助我。

@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    com.actionbarsherlock.view.SubMenu subMenu = menu.addSubMenu("Menu");
    subMenu.add(0, SUB_MENU_1, 0,"Settings");
    com.actionbarsherlock.view.MenuItem menuItem = subMenu.getItem();
    menuItem.setIcon(R.drawable.menu_selector);
    menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    return true;
}

在这里,我很喜欢打开操作栏 sherlock on key down 的子菜单,

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_MENU:
                        // here some write code
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

提前致谢,

4

1 回答 1

5

我为这个问题找到了自己的解决方案,

public Menu menuMain;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menuMain = menu;
    subMenu = menu.addSubMenu(0, MENU_ID_1, 0, "Menu");
    subMenu.add(0, SUB_MENU_1, 0, getString(R.string.menu_settings));
    subMenu.add(0, SUB_MENU_2, 0, getString(R.string._new));
    menuItem = subMenu.getItem();
    menuItem.setIcon(R.drawable.menu_selector);
    menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    return true;
}

首先,我们将全局变量显示在操作栏 sherlock 菜单上并为 onCreateOptionMenu 进行初始化,

以及用于活动定义的 onkeyup 覆盖方法,

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_UP || event.getAction() == KeyEvent.ACTION_DOWN) {

        switch (keyCode) {
        case KeyEvent.KEYCODE_MENU:
            if (menuMain != null && menuMain.findItem(MENU_ID_1) != null)
                menuMain.performIdentifierAction(MENU_ID_1, 0);
            return true;
        }
    }
    return false;
}

所以,很高兴它工作得很好,没有任何异常抛出......!!!!!!

于 2013-07-26T04:25:28.657 回答