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

我正在尝试添加一个点击监听器到菜单硬件button。 目前我只是把我的onclick逻辑放入onCreatePanelMenu方法并返回false。 但那只是感觉不对

有没有更干净的方法?

代码目前看起来像这样:

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

Solutions Collecting From Web of "Android:如何将监听器添加到硬件菜单button?"

捕获onKeyDown()的关键事件并在那里添加你的动作。

样品:

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

只需将doSomething()replace为您的function/方法即可。

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

 @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); } } 

以上应该是非常自我解释的 – 它设置一个菜单,显示选项或注销选项。

/尼克拉斯

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

如果您想在首次创build后更改选项菜单,则必须重写onPrepareOptionsMenu()方法

所以每次用户点击Menu键时系统都会调用onPrepareOptionsMenu()

onContextItemSelected

onOptionsItemSelected

我相信是你在找什么。