2012-04-18 53 views
0

我的應用程序有一個選項菜單,幾乎可以在所有活動中使用,這是通過實施onCreateOptionsMenu()創建的。但是在一個Activity中有一個PopupWindow,當這個PopupWindow具有焦點(正常工作所需)時,點擊菜單按鈕不會顯示選項菜單。如何爲PopupWindow製作選項菜單?

PopupWindows沒有onCreateOptionsMenu()函數。有沒有其他方法可以將選項菜單添加到PopupWindow?

另外,有沒有辦法從後面的活動獲取選項菜單,以顯示當用戶點擊菜單按鈕?

回答

0

我通過攔截菜單鍵並在活動上調用openOptionsMenu()來解決此問題。這裏的關鍵是聽衆:

OnKeyListener mMenuKeyListener = new OnKeyListener() { 
    @Override 
    public boolean onKey(View view, int keyCode, KeyEvent event) { 
     if(keyCode==KeyEvent.KEYCODE_MENU) { 
      activity.openOptionsMenu(); 
      return true; 
     } else { 
      return false; 
     } 
    } 
}; 

我覺得你有這個按鍵偵聽器添加到每個視圖中PopupWindow得到它的工作,所以我寫了一個函數來做到這一點:

public void setupMenuKeyListenerRecursive(View v) { 
    if (v != null) { 
     try { 
      ViewGroup viewGroup = (ViewGroup)v; 
      int childCount = viewGroup.getChildCount(); 
      for (int index = 0; index < childCount; index++) { 
       View child = viewGroup.getChildAt(index); 
       setupMenuKeyListenerRecursive(child); 
      } 
     } catch (Exception e) { 
     } 
     v.setOnKeyListener(mMenuKeyListener); 
    } 
}