2014-09-30 63 views
0

我在我的片段中有一個列表視圖。長按該列表視圖中的項目,我有一個上下文菜單。菜單中的最後一個選項是關閉它(關閉菜單)。這是我做的:以編程方式關閉上下文菜單在不同設備上的片段

public boolean onContextItemSelected(MenuItem item) { 
    if (item.getGroupId() == 0) { 
     switch(item.getItemId()) { 
      case 1... 
      case 2... 
      case Constants.Context_Menu_Items.CONTEXT_MENU_CLOSE: 
       getActivity().closeContextMenu(); 
      break; 
     } 
    } 
    return super.onContextItemSelected(item); 
} 

我檢查了應用程序在我的三星Galaxy S3 - 它的工作就好了。現在我將APK發送給朋友檢查他的Nexus 3上的應用程序,而此選項對他無效,上下文菜單未關閉。

什麼原因可以解決?

+0

什麼是'常量.Context_Menu_Items.CONTEXT_MENU_CLOSE'? – 2014-09-30 06:27:30

+0

@MehulJoisar這是該菜單項的ID。從我的Constants類和Context_Menu_Items類裏面:'public static final int CONTEXT_MENU_CLOSE = 3;' – Igal 2014-09-30 06:37:14

+0

getActivity()。closeContextMenu();做到這一點,它將以編程方式關閉contextmenu – 2017-03-06 18:16:41

回答

0

https://developer.android.com/reference/android/app/Activity.html#onContextItemSelected(android.view.MenuItem)中的文檔說「返回false以允許正常的上下文菜單處理繼續進行,真正的在此處使用」。

所以爲了保證代碼的作品,我會寫

case Constants.Context_Menu_Items.CONTEXT_MENU_CLOSE: 
    return true; 

,而不是

case Constants.Context_Menu_Items.CONTEXT_MENU_CLOSE: 
    break; 

從而避免super.onContextItemSelected通話(項目)

相關問題