Если вы просто хотите что-то сделать при нажатии кнопки меню, вы должны просто реализовать onKeyDown () / onKeyUp () для обработки клавиши меню, как и любой другой клавиши. Обязательно верните true, чтобы сказать, что вы его потребляете, чтобы обработка клавиш по умолчанию не выполнялась (обычно это связано с отображением панели меню).
НЕ делайте этого, реализуя onCreateOptionsMenu () или onPrepareOptionsMenu (). Это хуки, которые вы реализуете для взаимодействия с меню параметров , а НЕ с клавишей меню . Нет никакой гарантии, что они будут вызваны в любой связи с нажатой клавишей меню. Бывает, что часто они есть, но в API ничего не определено, говоря, что это так, и действительно, это явно не случай.
Как правило, полагаться на побочные эффекты, подобные этому (о, когда пользователь нажимает клавишу меню, вызывается этот API, который не задокументирован как непосредственно связанный с клавишей меню), это то, чего вам абсолютно следует избегать. Вы по определению полагаетесь на детали реализации, и есть большая вероятность, что это вас укусит.
Например, начиная с Android 3.0, когда есть панель действий, onCreateOptionsMenu () вызывается сразу, когда создается действие, и onPrepareOptionsMenu () вызывается всякий раз, когда необходимо обновить действия в панели действий. Это связано с тем, что меню параметров теперь интегрировано с панелью действий.