在imagegridview上显示上下文菜单

时间:2014-02-11 11:47:25

标签: android contextmenu

我试图创建一个上下文菜单,当我将手指(长)放在网格视图中的图像上时弹出窗口。

现在在创建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;
}

}

听众工作,当我用手指长按图像时,他打印出调试输出。但是上下文菜单从未显示过。我做错了吗?

4 个答案:

答案 0 :(得分:1)

OnCreate()内注册GridView for ContextMenu。

像这样

registerForContextMenu(imageGrid);

然后像这样打电话

修改:

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

答案 1 :(得分:0)

你是否尝试在你的活动中调用它

this.openContextMenu(...);

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

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

答案 2 :(得分:0)

尝试使用grid.setOnItemLongClickListener(listener);

答案 3 :(得分: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()可以解决问题。