我希望我的 Android 设备上的菜单键打开一个对话框,而不是在我的应用程序运行时打开菜单。我试图将其编码,onCreateOptionsMenu(Menu menu)
但它仅在我第一次按下菜单按钮时才起作用。我可以用其他方式吗?
问问题
7425 次
2 回答
15
您可以通过在 Activity 中拦截它们来覆盖系统按键的默认行为。这是通过覆盖onKeyDown事件来完成的,如果您想阻止系统处理密钥,则返回true
。您的案例的代码应如下所示:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ( keyCode == KeyEvent.KEYCODE_MENU ) {
// perform your desired action here
// return 'true' to prevent further propagation of the key event
return true;
}
// let the system handle all other key events
return super.onKeyDown(keyCode, event);
}
不过,这可能不适用于所有键;这样做的原因是在接收到此消息view
之前将密钥发送到当前。activity
在这种情况下,您还需要覆盖onKeyDown
当前视图的 。
于 2013-10-06T23:18:49.887 回答
1
我在我的活动中使用它来覆盖返回键,它应该对菜单键起作用:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0) {
// Show your menu
} else {
return super.onKeyDown(keyCode, event);
}
}
于 2013-10-05T20:27:00.970 回答