2012-01-29 25 views
6

它看起來像onCreateContextMenu根本不被調用。在我的onCreate我ListActivity我:onCreateContextMenu不被調用

list = getListView(); 
registerForContextMenu(list); 

(我知道這是多餘的,我剛剛通過getListView()具有相同的結果)。

這是我的onCreateOntextMenu;

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    Log.d("LM", "onCreateContextMenu"); 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.context_landmarks, menu); 
} 

日誌永遠不會生成。沒有人有任何建議嗎?

+0

只需將其傳遞給其他人,我也在視圖中添加了onItemLongClickListener。這對我來說很有意義,爲什麼這不起作用。 – spuppett 2012-01-29 21:43:59

回答

8

我的想法是ListView攔截事件,而不是進入contextMenu行爲。這對我來說很合理,因爲OnItemLongClickListener行爲與contextMenu的行爲重疊。如果沒有如何識別contextMenu和OnItemLongClickListener?

+0

這就是我發現的。回到代碼顯示長時間點擊正在工作後,它打動了我。 – spuppett 2012-02-02 14:31:56

+0

是的..這工作! 謝謝。 – Shyam 2012-10-23 06:05:53

-2

您必須致電onCreate(Bundle savedInstanceState)中的registerForContextMenu(View view)方法。

0

嘗試找到registerForContextMenu(list);作爲您在onCreate方法中調用的最後一個方法。 我的意思是在列表適配器沒有被調用之前調用這個方法。

0

只是刪除youwidget.setonLongclicklisteneryourwidget.setLongClickable

然後在onCreate() 添加registerforContextmenu(yourwidget)然後根據所用的小部件添加代碼。

希望它會有幫助。

0

我的問題與lulumeya的回答密切相關,這個問題指向了正確的方向。我之前多次完成了上下文菜單,但至今沒有遇到過這種情況。

我打電話給View.setOnClickListener(listener)Adapter.getView(...)應該是ListView.setOnItemClickListener(listener)以避免與上下文菜單衝突。

通常,我確定OnItemClickListener更優化,特別是因爲每次創建或回收視圖時只使用一個偵聽器實例,而不是創建新實例。

0

我有這樣的問題,只有通過確保

  1. ,由於RESP解決。 Activity註冊了Views,同樣的Activity必須也覆蓋onCreateContextMenu();在片段中執行此操作將不起作用
  2. 由於我使用了額外的Fragment創建適配器(並向其註冊),因此不是活動的片段必須重寫onContextItemSelected()。

我正在考慮放棄長按彈出式菜單,以支持在右邊緣的Youtube風格的按鈕彈出一個菜單,不褪色一切背景---這是什麼搜索條件順便說一句?