首页 > 代码库 > android,关于上下文菜单ContextMenu数据值的转递
android,关于上下文菜单ContextMenu数据值的转递
在长按某view时,如该view有绑定OnCreateContextMenuListener,则会弹出ContextMenu上下文菜单,这类似于右键菜单,菜单弹出后点击某菜单项,则Activity或Fragment中的 public boolean onContextItemSelected(MenuItem item) 方法会响应菜单的点击,根据item的id来确定点击的是哪一个菜单项,从而进行进一步的操作。
那么现在的问题是,有时候我们只知道了点击的哪个菜单项是不够的,还需要知道更多的信息,比如菜单项是点击的“删除”,要进行删除操作,那么必要要知道要进行删除的是哪个对象。
解决方案:将数据存放在触发菜单view的tag中,同时在注册ContextMenuListener时(实际是添加menuItem时)将对应view绑定到menuItem上。这样在点击菜单项后,就可以通过menuItem来获取它的actionView从而进一步得到tag中的值。代码片断如下:
view.setTag(msg.getId()); view.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { //给对话ITEM绑定上下文菜单 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle(R.string.title_context_menu_operate); menu.add(0, CommonContents.ID_CONTEXT_MENUITEM_DELETE, 0, R.string.context_menuitem_delete).setActionView(v); menu.add(0, CommonContents.ID_CONTEXT_MENUITEM_DELETE, 1, R.string.context_menuitem_copy).setActionView(v); } });
public boolean onContextItemSelected(MenuItem item) { long id = (Long) item.getActionView().getTag(); switch(item.getItemId()){ case 1: Toast.makeText(this, item.getTitle()+String.valueOf(id), Toast.LENGTH_SHORT).show(); case 2: Toast.makeText(this, item.getTitle()+String.valueOf(id), Toast.LENGTH_SHORT).show(); } return super.onContextItemSelected(item); }
android,关于上下文菜单ContextMenu数据值的转递
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。