2014-02-11 127 views
0

我正嘗試創建一個上下文菜單,當我在GridView中的圖像上按住我的手指(長)時彈出。在imagegridview上顯示上下文菜單

現在在創建GridView的我已經做了這個片段:

的OnCreate:

imageGrid.setAdapter(ImageAdapter); 

哪裏ImageAdapter是我獨立的類,它的工作對我來說。

而且在同一個片段我有

@Override 
    public boolean onContextItemSelected(MenuItem item) { 
     if(item.getTitle()=="Action1"){ 
      Log.d("Debug","Clicked"); 
     } 
     else { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     menu.setHeaderTitle("Context Menu"); 
     menu.add(0, v.getId(), 0, "Action 1"); 
     menu.add(0, v.getId(), 0, "Action 2"); 
    } 

然後在我的適配器類我註冊這樣的longOnclickListener:

private class selectOnLongClickListener implements View.OnLongClickListener{ 
    private ViewHolder mViewHolder; 

private selectOnLongClickListener(ViewHolder viewHolder) 
{ 
    mViewHolder = viewHolder; 
} 

@Override 
public boolean onLongClick(View v) 
{ 
    Log.d("Debug","OnLongClick"); 
    return true; 
} 

} 

監聽器的工作原理,他打印了我調試輸出時我把手指放在一張圖像上。但上下文菜單從不顯示。難道我做錯了什麼?

回答

0

不要ü嘗試在活動稱之爲

this.openContextMenu(...); 

@Override 
public boolean onLongClick(View v) 
{ 
    Log.d("Debug","OnLongClick"); 

    YourActivity.this.openContextMenu(v); 
    return true; 
} 
+0

我正在使用片段,我需要做getActivity()。this.openContextMenu(v)? – user1480139

+0

是的,就是這樣,getActivity()。openContextMenu(v) –

+0

我不能使用它,因爲我的適配器類從baseAdapter擴展,所以我不能使用getActivity()。 – user1480139

0

嘗試使用grid.setOnItemLongClickListener(listener);

0

註冊你的GridView對於文本菜單裏面OnCreate()

這樣

registerForContextMenu(imageGrid); 

然後調用這樣

編輯:

@Override 
public boolean onLongClick(View v) 
{ 
    Log.d("Debug", "OnLongClick"); 
    v.showContextMenu(); 
    return true; 
} 
+0

這還是菜單沒有顯示。 – user1480139

+0

現在看到更新的答案 –

+0

謝謝,但OnItemLongClickListener無法解析,因爲我從片段擴展。 – user1480139

0

這是修改後的監聽器。

private class selectOnLongClickListener implements View.OnLongClickListener{ 
    private ViewHolder mViewHolder; 

    private selectOnLongClickListener(ViewHolder viewHolder) 
    { 
     mViewHolder = viewHolder; 
    } 

    @Override 
    public boolean onLongClick(View v) 
    { 
     Log.d("Debug", "OnLongClick"); 
     v.showContextMenu(); 
     return true; 
    } 
} 

v.showContextMenu()可以做到這一點。