我试图创建一个上下文菜单,当我将手指(长)放在网格视图中的图像上时弹出窗口。
现在在创建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 :(得分: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()可以解决问题。