我目前正在尝试向菜单硬件按钮添加点击监听器。目前我只是将onclick逻辑放入onCreatePanelMenu方法并返回false。但那只是感觉不对。
有更干净的方式吗?
目前的代码如下:
@Override
public boolean onCreatePanelMenu(int featureId, Menu menu) {
Toast.makeText(this, "HALLO!", Toast.LENGTH_SHORT).show();
return false;
}
答案 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
我相信你正在寻找的东西。