Hmmmm ... onLongKeyPress()
はKEYCODE_MENU
で動作しないようです。どのように迷惑。
これは、ネクサスS(4.0.3)とネクサスワン(2.3.6)上で動作するようです:基本的に
public class MenuKeyDetectorActivity extends Activity {
boolean wasLongPress=false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
wasLongPress=wasLongPress | event.isLongPress();
}
return(false);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
Log.w("MKD", String.format("wasLongPress: %b", wasLongPress));
wasLongPress=false;
}
return(false);
}
}
、それは長押しまたはないあなたのonKeyDown()
の呼び出しであるかどうかに注意してください、 onKeyUp()
にその情報を使用して最終的な処分を決定します。
'onPrepareOptionsMenu'コールバックを使用することは私の後退ですが、私はキーイベントを介してそれを処理することを好むでしょう。 –