为任意视图填充ContextMenuInfo

时间:2015-07-07 07:56:23

标签: android

我有任意视图列表,长按一下会显示上下文菜单,这些视图不一定是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()中填充一些数据

1 个答案:

答案 0 :(得分:0)

通过在我的自定义视图类中重写以下方法解决了问题

@Override 
protected ContextMenuInfo getContextMenuInfo() {
         return null;
}

在那里你可以返回任何值,例如 AdapterView.AdapterContextMenuInfo

的实例