2015-09-18 44 views
0

工作中使用onKeyDownKEYCODE_MENU做什麼,但它與KEYCODE_SEARCH的Android - onkeydown事件不會KEYCODE_MENU

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    switch(keyCode){ 
     case KeyEvent.KEYCODE_MENU: 
      Toast.makeText(this, "Menu key pressed", Toast.LENGTH_SHORT).show(); 
      return false; 
     case KeyEvent.KEYCODE_SEARCH: 
      Toast.makeText(this, "Search key pressed", Toast.LENGTH_SHORT).show(); 
      return false; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

我覺得有一些處理菜單鍵,這樣就不會聽我的代碼 工作,我已經嘗試disbling onCreateOptionsMenu這樣的:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    return true; 
} 

但仍然無法工作..
因此,任何想法使菜單按鈕聽onKeyDown ??

回答

1

這可能是程序兼容性V22的錯誤。見https://code.google.com/p/android/issues/detail?id=159795

的解決方法,張貼在該線程是覆蓋dispatchKeyEvent:

@Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 
     int keyCode = event.getKeyCode(); 
     int action = event.getAction(); 
     boolean isDown = action == 0; 

     if (keyCode == KeyEvent.KEYCODE_MENU) { 
      return isDown ? this.onKeyDown(keyCode, event) : this.onKeyUp(keyCode, event); 
     } 

     return super.dispatchKeyEvent(event); 
    } 

編輯:請參閱Upgraded to AppCompat v22.1.0 and now onKeyDown and onKeyUp are not triggered when menu key is pressed

0

你在什麼設備和操作系統上?

您可能需要更新您的COMPAT庫到最新.. 23.0.0

相關問題