Android 在imagegridview上显示关联菜单

Android 在imagegridview上显示关联菜单,android,contextmenu,Android,Contextmenu,我试图创建一个上下文菜单,当我在gridview中将手指(长)放在图像上时,它会弹出 现在在创建gridview的片段中,我做了以下操作: 一旦创建: imageGrid.setAdapter(ImageAdapter); 其中ImageAdapter是我的独立类,它为我完成工作 也在我得到的相同片段中 @Override public boolean onContextItemSelected(MenuItem item) { if(item.getTitle()=

我试图创建一个上下文菜单,当我在gridview中将手指(长)放在图像上时,它会弹出

现在在创建gridview的片段中,我做了以下操作:

一旦创建:

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;
}

}

监听器工作时,当我将手指长按在图像上时,他会打印调试输出。但上下文菜单从未显示。我做错什么了吗?

在你的活动中,你试着称之为这一点吗

this.openContextMenu(...);

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

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

尝试使用
grid.setOnItemLongClickListener(listener)

OnCreate()中为ContextMenu注册GridView

像这样

registerForContextMenu(imageGrid);
那就这样打电话吧

编辑:

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

这是修改后的侦听器

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()就可以了。

我在处理片段,我需要做getActivity()吗。这个.openContextMenu(v)?是的,就是这样,getActivity()。openContextMenu(v)我不能使用它,因为我的适配器类是从baseAdapter扩展的,所以我不能使用getActivity()。谢谢,但无法解析OnItemLongClickListener,因为我正在从片段进行扩展。请尝试使用
v.showContextMenu()
inside
onLongClick()
谢谢,这就可以了。