android - OpenOptionsMenu 不适用于 ActionBarSherlock 自定义子菜单

标签 android actionbarsherlock submenu android-optionsmenu

在我的应用程序中,我使用的是 ActionBarSherlock 4.4。

由于 ForcedOverflow 已从最新版本中删除,我使用以下 XML 代码来复制 OverflowMenu。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_overflow"
        android:icon="@drawable/abs__ic_menu_moreoverflow_holo_dark"
        android:orderInCategory="100"
        android:showAsAction="always">
        <menu>
            <item
                android:id="@+id/action_settings"
                android:showAsAction="never"
                android:title="@string/action_settings" />
            <item
                android:id="@+id/recycleBin"
                android:showAsAction="never"
                android:title="Recycle Bin" />
        </menu>
    </item>
</menu>

Overflow 现在非常适合我,适用于 Android 4.3 和 2.3.3。

我的问题:

2.3.3 设备有一个硬件菜单键。我希望当按下菜单键时,应打开 Overflow OptionsMenu。

我在 Activity 中使用了以下代码,但它不起作用。 (不过我正在 LogCat 中获取消息)

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) { 
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
            if (event.getAction() == KeyEvent.ACTION_UP &&
                keyCode == KeyEvent.KEYCODE_MENU) {
                Log.d("HomeActivity", "OpenOptionsMenu");
                openOptionsMenu();
                return true;
            }
        }
        return super.onKeyUp(keyCode, event);
    }

我环顾四周,尝试了所有建议的解决方案。但没有人谈论使用 openOptionsMenu() 打开自定义溢出菜单。

我是不是漏掉了什么?

有没有一种方法可以使它看起来好像父溢出图标项 android:id="@+id/menu_overflow" 已被单击?

如果有人指出我在这里遗漏了什么,那就太好了。

最佳答案

我今天遇到了和你一样的问题。我认为这是因为 ActionBarSherlock 有自己的选项菜单实现,它覆盖了 Android 的选项菜单,在该过程中禁用了 openOptionsMenu() 方法。也许这是库中的错误?

无论如何,我通过在包含菜单的 Activity 中覆盖 onKeyUp 解决了这个问题,如下所示:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        View v = findViewById(R.id.YOUR_MENU_VIEW_HERE);
        v.performClick();
        return true;
    }
    return super.onKeyUp(keyCode, event);
}

希望对您有所帮助。

关于android - OpenOptionsMenu 不适用于 ActionBarSherlock 自定义子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18937711/

相关文章:

javascript - JQuery Autocomplete 在 Chrome 中工作,但在 android 中不工作,使用 phonegap

android - 如何始终在 Android 中的 ActionBar 下方显示 ActionBar 选项卡

android - 如何使用 ActionBarSherlock 更改 Actions 的触摸影响颜色?

android - 将操作栏方向更改为从右到左

html - 可滚动的多级水平菜单

android - 当 android 终止后台任务时,AsyncTask postExecute 或 onCancelled 不会被调用 - 不再有后台进程

android - 通过 Java 从 Kotlin 访问内部方法

android - SMS Broadcast Receiver 收不到短信

html - 下拉框在使用 CSS 的 HTML 页面中不起作用

Css子菜单无法在IE中点击