2012-01-27 4 views
1

Я хочу, чтобы определенный флаг в моем коде устанавливался, когда на экране отображается меню. Я попытался поймать событие keyCode == KeyEvent.KEYCODE_MENU в onKeyDown, чтобы определить, когда появится меню, - но затем, если кнопка меню будет нажата второй раз (при этом исчезнет меню), не будет события keyCode == KeyEvent.KEYCODE_MENU.Повторное нажатие кнопки меню

Должен ли я искать какое-либо другое событие или есть функция, чтобы проверить, отображается ли какое-либо меню?

+0

Проверьте мой ответ, как легко обнаружить домашнюю, последнюю и кнопку питания. Проверьте [это] (http://stackoverflow.com/a/29648460/1071545) –

ответ

2

Для того, чтобы поймать меню открывается, вы можете переопределить

public boolean onPrepareOptionsMenu(Menu menu) 

Для того, чтобы поймать меню закрывается, вы можете переопределить

public void onOptionsMenuClosed(Menu menu) 

Однако имейте в виду, что второй один будет называться как когда пользователь нажимает кнопку «меню» второй раз или отбирает один из параметров меню. Поэтому вам нужно будет использовать его в сочетании с

public boolean onOptionsItemSelected(MenuItem item) 
+0

Не работает в моем случае. Обратитесь к этому http://stackoverflow.com/questions/15652444/not-able-to-dismiss-the -alertdialog-when-press-menu-key-second-time –

+0

Я очень расстроен, почему ppl дал заметный ответ на фактический неправильный ответ. –

+1

@ArslanAhmad Ухаживать за тем, чтобы поверить, что этот ответ неверен? Он работал отлично, два года назад, когда задавался вопрос - и он все еще работает хорошо. –

Смежные вопросы