2012-01-27 66 views
1

我想要在屏幕上顯示菜單時設置我的代碼中的某個標誌。我嘗試捕獲onKeyDown中的keyCode == KeyEvent.KEYCODE_MENU事件以檢測菜單何時出現 - 但如果再次按下菜單按鈕(使菜單消失),則沒有keyCode == KeyEvent.KEYCODE_MENU事件。檢測菜單按鈕被第二次按下

我應該尋找其他事件,還是有功能來測試是否顯示某種菜單?

+0

檢查我的答案如何輕鬆檢測到家庭,最近和電源按鈕。檢查[這](http://stackoverflow.com/a/29648460/1071545) – 2015-04-15 11:06:53

回答

2

趕菜單被打開,您可以覆蓋

public boolean onPrepareOptionsMenu(Menu menu) 

爲了趕上被關閉菜單,您可以覆蓋

public void onOptionsMenuClosed(Menu menu) 

但是請記住,第二個將都被稱爲當用戶第二次按下「菜單」按鈕或點擊其中一個菜單選項時。因此,您需要結合使用它

public boolean onOptionsItemSelected(MenuItem item) 
+0

不工作在我的case.please參考這個http://stackoverflow.com/questions/15652444/not-able-to-dismiss-the -alertdialog-when-press-menu-key-second-time – 2013-03-27 06:22:31

+0

我非常失望,爲何ppl給出了實際錯誤答案的明顯答案。 – 2015-04-15 11:08:52

+1

@ArslanAhmad謹慎解釋爲什麼相信這個答案是錯誤的?兩年前,當這個問題被問到 - 它仍然運作良好,它工作得很好。 – 2015-04-15 19:58:05