2011-11-25 19 views

回答

5

如果您只是想爲菜單按鈕創建按鍵偵聽器,則應該覆蓋onKeyDown並檢查鍵碼。現在既然你指出你不是那麼喜歡你,你也可以重寫onPrepareOptionsMenu,每次點擊菜單按鈕並向用戶顯示一個菜單。如果您在onCreateOptionsMenu方法中沒有提供菜單,我不確定是否調用了這個選項。

+0

謝謝,這個作品。我結束了在'onCreateOptionsMenu()'中的菜單對象的膨脹,並覆蓋了'onOptionsItemSelected()'。 – user1032613

+0

@ bobbake4第二次按菜單時如何監聽public void onOptionMenuClosed()不起作用。 –

+0

在Android 4.4.2上沒有定義任何選項菜單,onPrepareOptionsMenu只在活動開始時被調用,並且不會再次。 – velis

16

你在尋找這個????的:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_MENU) { 
      //do your work 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
+0

謝謝。我知道這種方法,但我不是檢查密鑰的大粉絲。我想要的東西類似'onBackPressed()',而不是'if(keyCode == KeyEvent.KEYCODE_BACK)'。 – user1032613

+1

如果您看看Activity源代碼的前幾行,您會看到onBackPressed按照後退按鈕keyCode調用: http://grepcode.com/file/repository.grepcode.com/java/ ext/com.google.android/android/4.3_r2.1/android/app/Activity.java#Activity.onKeyDown%28int%2Candroid.view.KeyEvent%29 – Lior

+1

這是否仍然適用於API 22?我有一個應用程序,該事件不會在家庭或菜單鍵上觸發。 –

相關問題