2013-03-12 28 views
0

我注意到,當我的活動實施onPrepareOptionsMenu() - 第一次按下效果不錯 - 從onPrepareOptionsMenu()的回調開始。但是當它仍然可見時(打開一些對話框),我想第二次按關閉它(觸發回調關閉對話框) - 第二次按菜單按鈕不會觸發onPrepareOptionsMenu()。不知道爲什麼android onPrepareOptionsMenu doen't第二次按下菜單按鈕

這是我如何實現它:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 

    if (onDoneListener != null) { 
     onDoneListener.OnDone(); 

    } 
    return false; 
} 

EDIT1:

我的評論者的幫助,但仍然沒有運氣後添加下一個功能。 OnKeyDown()也沒有收到下一個菜單按鈕。它看起來像菜單按鈕不會得到事件,直到我按下後退按鈕。這裏是代碼:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     if (onDoneListener != null) 
      onDoneListener.onDone(); 

    } 
    return super.onKeyDown(keyCode, event); 
} 

我也試圖返回true和false,但不是運氣。

回答

0

你所看到的是OnPrepareOptionsMenu的確切預期行爲。它在之前運行菜單顯示,而不是之後。

+1

是的,但我返回false,並根據文檔「您必須返回true才能顯示菜單;如果您返回false,它將不會顯示。」所以菜單真的不可見 – Nativ 2013-03-12 11:39:03

+0

eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeh? – slezica 2013-03-12 23:36:17

+1

如果菜單沒有加載,所以它有意義,這個函數被再次調用。無論如何,你知道我每次按下菜單按鈕時怎樣才能打電話給我的回叫?謝謝 – Nativ 2013-03-13 08:58:01