Android: How can I set a listener to the MenuButton?

android, java, optionmenu

Solution

Usually you shouldn't override `MENU` behavior as users expect menu to appear, however you can use something along these lines:

/* (non-Javadoc)
 * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent)
 */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ( keyCode == KeyEvent.KEYCODE_MENU ) {
        Log.d(TAG, "MENU pressed");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Problem

I want to do a custom action when pressing on the `Menu` button on the phone. Is it possible to set an onClickListener (or similar) on the button and if so, how? `onCreateOptionsMenu` is only called the first time the button is pressed - I've already tried this.

Original source