2012-06-14 11 views
0

我想在用戶按菜單按鈕時顯示上下文菜單。我發現並使用下面的代碼片段:顯式的上下文菜單調用在Android中不時起作用

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if((keyCode == KeyEvent.KEYCODE_MENU) && event.getRepeatCount() == 0) 
    { 
    ImageView v = (ImageView)findViewById(IMAGE_ID); 
    Log.v("me", "menu " + v.toString()); 
    openContextMenu(v); 
    } 
    return true; // return false; doesn't work either 
} 

該視圖當然是註冊上下文菜單,並且它可以通過長時間觸摸正常工作。問題是上述代碼只能不時地工作。這是日誌消息總是被解僱,當我按菜單按鈕,但上下文菜單顯示在非常罕見的情況下。當它顯示正常時,唯一的情況就是在應用程序啓動之後。換句話說,只有第一次嘗試是成功的,其他所有人都偶爾工作,但大部分都不會。視圖不會更改,始終可以找到,否則會在記錄行中產生此類問題和異常。

+0

「我想在用戶按菜單按鈕時顯示上下文菜單」 - 請不要這樣做。對於初學者來說,有數百萬設備沒有MENU按鈕。請允許其存在的MENU按鈕用於正常操作欄或選項菜單。 – CommonsWare

+0

@CommonsWare。我會做,如果有人能幫我解決問題;-)。我知道某些設備上沒有菜單按鈕,但如果存在,用戶通常習慣於按下它並獲得反饋。至於操作欄和選項菜單,我們可以在其他適當的地方討論這個設計問題,它不會偏離主題。請讓我知道。 – Stan

+0

「,但如果它存在,用戶通常習慣於按下並獲得反饋」 - 否,用戶通常習慣於按它並獲得操作欄溢出或選項菜單。用戶通常不習慣按下它並獲得其他任何東西。自從Android開始以來,這一直是UX反模式。請允許其存在的MENU按鈕用於正常操作欄或選項菜單。作爲一個附帶的好處,你可以避免在這個問題上遇到問題。 – CommonsWare

回答

0

事實證明,在onCreateContextMenu中有一個錯誤,它阻止了上下文菜單不時出現。事實上,它並沒有在項目中填充菜單,Android核心中的設計跳過了一個空菜單。現在它按預期工作。

相關問題