Maybe you also have overrode onKeyDown method and made it always return true. Returning true means that keyEvent will be prevented from being propagated further. See code below:
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { /* handling event */ return true; //onCreateOptionsMenu won't be invoked.}