2011-03-07 67 views
1

我正在使用什麼應該是非常簡單的代碼,但它只是不想工作。操作系統是否攔截這個?你可以攔截菜單上的長按嗎?

@Override 
public boolean onKeyLongPress(int keyCode, KeyEvent event) { 


    if (keyCode == KeyEvent.KEYCODE_MENU) 
    { 
    longOptionPress = true; 
    openOptionsMenu(); 
     return true; 
    } 
    return super.onKeyLongPress(keyCode, event); 
} 

回答

10

您必須對事件調用startTracking()從正常onKeyPress()方法:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     event.startTracking(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

又見a question I asked and answered some time ago

+0

感謝您的快速答案和鏈接...回答了常規菜單後續問題不啓動。 – Maximus 2011-03-07 17:26:36

+0

現在的問題是,你沒有單擊菜單按鈕。你如何避免它? – 2013-03-26 21:43:39

1

如果是ListView,則需要使用onCreateContextMenu

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) 
相關問題