博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android,关于上下文菜单ContextMenu数据值的转递
阅读量:6035 次
发布时间:2019-06-20

本文共 1412 字,大约阅读时间需要 4 分钟。

hot3.png

      在长按某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);    }

转载于:https://my.oschina.net/u/2263956/blog/339817

你可能感兴趣的文章
Hadoop集群搭建步骤
查看>>
更改ubuntu的系统语言
查看>>
jvm参数详解,内存泄露解决
查看>>
升级Windows Management Framework对事件转发的影响
查看>>
我的友情链接
查看>>
mysql报错问题解决Character set 'utf8mb4' is not a compil
查看>>
在CentOS6.8下安装Docker
查看>>
VC++播放音频文件和音频数据的方法
查看>>
1.4T的mysql表删除
查看>>
超前引用
查看>>
echarts数据自我定制(三)--实时数据传输,带回放功能
查看>>
四级词汇(俞敏洪)-词根与词缀(二)
查看>>
IT人的学习方法
查看>>
IIS7/7.5/8如何实现访问HTTP跳转到HTTPS访问
查看>>
Linux运维工程师面试题第九套
查看>>
与公务员斗争维权的实战攻略
查看>>
jstack dump日志文件详解
查看>>
[Ruby] 基础知识
查看>>
Codeforces Round #426 (Div. 2)The Meaningless Game【数学题】【水题】
查看>>
centos 配置sudo记录日志
查看>>