Android:如何将监听器添加到硬件菜单按钮?

时间:2011-11-15 13:48:24

标签: android

我目前正在尝试向菜单硬件按钮添加点击监听器。目前我只是将onclick逻辑放入onCreatePanelMenu方法并返回false。但那只是感觉不对。

有更干净的方式吗?

目前的代码如下:

@Override
public boolean onCreatePanelMenu(int featureId, Menu menu) {
    Toast.makeText(this, "HALLO!", Toast.LENGTH_SHORT).show();
    return false;
}

4 个答案:

答案 0 :(得分:77)

onKeyDown()内抓住关键事件并在那里添加您的操作。

样品:

@Override
public boolean onKeyDown(int keycode, KeyEvent e) {
    switch(keycode) {
        case KeyEvent.KEYCODE_MENU:
            doSomething();
            return true;
    }

    return super.onKeyDown(keycode, e);
}

只需将doSomething()替换为您的功能/方法。

答案 1 :(得分:4)

如果您需要一些代码示例,可以试试这个:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
        case R.id.preferences:
            showPreferencesActivity();
            return true;
        case R.id.logOff:
            logOff();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

上面应该是非常自我解释 - 它设置一个菜单,其中包含显示首选项或注销的选项。

/尼克拉斯

答案 2 :(得分:1)

试试这个 http://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu

  

如果您想在首次更改选项菜单后再进行更改   创建后,您必须覆盖onPrepareOptionsMenu()方法

因此,每次用户点击onPrepareOptionsMenu()

时,系统都会调用Menu

答案 3 :(得分:0)

onContextItemSelected

onOptionsItemSelected

我相信你正在寻找的东西。