我有任意视图列表,长按一下会显示上下文菜单,这些视图不一定是ListView的子视图。使用我的代码显示contextmenu但问题是当选择菜单项时(在Activity的onContextItemSelected中)MenuItem.getMenuInfo()未设置(null)
然后我尝试了类似下面的内容
class MyView{
public MyView(Context context){
super(context);
setOnCreateContextMenuListener(this);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menuInfo = new AdapterView.AdapterContextMenuInfo(v,
getPosition(v), v.getId());
getActivity().onCreateContextMenu(menu, v, menuInfo);
}
}
然后在负责实际显示ContextMenu和处理点击的Activity上,在 onContextItemSelected 中我有MenuItem.getMenuInfo()仍为NULL,在 onCreateContextMenu 下显然不为空Activity类。我的问题是,如果我使用Activity类的 registerForContextMenu()或按照上面的代码创建上下文菜单,在这两种情况下我们如何在MenuItem.getMenuInfo()中填充一些数据
答案 0 :(得分:0)
通过在我的自定义视图类中重写以下方法解决了问题
@Override
protected ContextMenuInfo getContextMenuInfo() {
return null;
}
在那里你可以返回任何值,例如 AdapterView.AdapterContextMenuInfo
的实例