キーアップイベントをリッスンするactionbarsherlockを使用しています。ハードウェアメニューボタンの場合、メニューをこのように強制的に表示します
public boolean onKeyDown(int keyCode, KeyEvent event) {
try {
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode) {
case KeyEvent.KEYCODE_MENU:
if (mMenu != null && mMenu.findItem(R.id.training_action_menu_group1) != null) {
mMenu.performIdentifierAction(R.id.training_action_menu_group1, Menu.FLAG_PERFORM_NO_CLOSE);
}
return true;
}
}
return false;
} catch (Exception e) {
ErrorUtil.handleSilentException(e);
Log.e(TAG, "Error onKeyDown", e);
}
return false;
}
問題は、ユーザーがハードウェア メニュー ボタンに指を置いたままにするとメニューが表示され、指を離すとメニューが閉じることです。これは、SGS 3 およびその他のデバイスで発生します。フラグMenu.FLAG_PERFORM_NO_CLOSE
はこの問題とは無関係のようですが、他の android 2.3 携帯電話の問題を何らかの形で修正しました。
ユーザーがボタンから指を離したときにメニューを開いたままにしておくにはどうすればよいですか?