Android 的activity中onCreateOptionsMenu onMenuItemSelected onOptionsItemSelected onCreateContextMenu onContextItemSelected 五个方法的使用:

onCreateOptionsMenu :此方法为创建菜单方法,这个菜单就是你在点击手机menu键时会看到的菜单。

onCreateContextMenu :此方法为创建菜单方法,你还需要对此菜单进行注册Activity.registerForContextMenu(View view),这个菜单是在你长按前面注册的view时看到的菜单。

onMenuItemSelected :当你选择上面两种菜单任意一种时都会触发这个事件。

onOptionsItemSelected :这个方法只在onCreateOptionsMenu 创建的菜单被选中时才会被触发。

onContextItemSelected :这个方法只在onCreateContextMenu 创建的菜单被选中时才会被触发。

/*因为在一个Activity中都使用onMenuItemSelected和onContextItemSelected时会冲突,
也就是说,当有长按弹出菜单的时候,点击菜单的选项响应的是onMenuItemSelected(),如果被
点击的Item Id不在 onMenuItemSelected中,事件就不会响应,此时不会再调用onContextItemSelected。
这样的话,我们在onContextItemSelected中定义的事件就不会执行,这就是很多人遇到的“onContextItemSelected失效”的原因.
这个时候,需要在onContextItemSelected做相应的判断,如果执行的事件不在onMenuItemSelected中,就执行onContextItemSelected。
*/

[java] view plaincopy
  1. @Override
  2. public boolean onMenuItemSelected(int featureId, MenuItem item) {
  3. switch (item.getItemId()) {
  4. case R.id.about:
  5. Intent intent = new Intent();
  6. intent.setClass(BaseActivity.this, AboutActivity.class);
  7. startActivity(intent);
  8. return true;
  9. case R.id.bgsettings:
  10. Intent changeBgIntent = new Intent();
  11. changeBgIntent.setClass(BaseActivity.this, BgActivity.class);
  12. startActivity(changeBgIntent);
  13. return true;
  14. case R.id.help:
  15. Intent helpIntent = new Intent();
  16. helpIntent.setClass(BaseActivity.this, HelpActivity.class);
  17. startActivity(helpIntent);
  18. return true;
  19. case R.id.exit:
  20. System.exit(0);
  21. return true;
  22. /*因为在一个Activity中都使用onMenuItemSelected和onContextItemSelected时会冲突,
  23. 也就是说,当有长按弹出菜单的时候,点击菜单的选项响应的是onMenuItemSelected(),如果被
  24. 点击的Item Id不在 onMenuItemSelected中,事件就不会响应,此时不会再调用onContextItemSelected。
  25. 这样的话,我们再onContextItemSelected中定义的事件就不会执行,这就是很多人遇到的“onContextItemSelected失效”的原因.
  26. 这个时候,需要在onContextItemSelected做相应的判断,如果执行的事件不在onMenuItemSelected中,就执行onContextItemSelected。
  27. */
  28. default:
  29. onContextItemSelected(item);
  30. }
  31. return false;
  32. }
[java] view plaincopy
  1. @Override
  2. public boolean onContextItemSelected(MenuItem item) {
  3. System.out.println("--------onContextItemSelected---------");
  4. switch (item.getItemId()) {
  5. case R.id.collect_book:
  6. doCollect();
  7. return true;
  8. case R.id.detail:
  9. Toast.makeText(this, "书籍详细信息", 3000).show();
  10. return true;
  11. default:
  12. return super.onContextItemSelected(item);
  13. }
  14. }

转载于:https://www.cnblogs.com/dandre/p/4507035.html

onContextItemSelected 与 onMenuItemSelected 的那些事相关推荐

  1. 遇事不责怪别人,换位思考能成全更好的自己

    在生活中,有时候有些人做的某些事可能会让你感觉不爽:这时,你最好不要急着去责怪他:试着把自己放在对方的处境,看看别人的生活,你才能看到人间百态,理解他人的难处. 每个人的生长环境不同,心境就不同:有些 ...

  2. 力所能及的做些自己喜欢和有趣的事

    我们每个人都有自己喜欢做的事:在自己可控且力所能及的情况下,在闲时,按自己的意愿去做些自己喜欢和有趣的事,会感觉到这事很有意义.在忙时,要为理想和奋斗而忙:不浪费时间在无意义的事和人身上. 朋友要的是 ...

  3. 不要纠结于过去发生的事

    在这个社会中,有些人很早就经历了一些不好的事,遇到不好的人:让他留了一些阴影.这时,应该学会不要纠结于过去发生的事情了!一件事情已经发生了,不管再怎么后悔也不能改变结局: 对这件事一直有懊悔之心,只会 ...

  4. 【运维学习笔记】生命不息,搞事开始。。。

    001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...

  5. 保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事

    保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事 10 things to consider when securing an embedded 802.11 Wi-Fi device 随着 ...

  6. Python爬虫实战糗事百科实例

    爬取糗事百科段子,假设页面的URL是 http://www.qiushibaike.com/8hr/page/1 要求: 使用requests获取页面信息,用XPath / re 做数据提取 获取每个 ...

  7. 关于.NET玩爬虫这些事 【初码干货】

    这几天在微信群里又聊到.NET可以救中国但是案例太少不深的问题,我说.NET玩爬虫简直就是宇宙第一,于是大神朱永光说,你为何不来写一篇总结一下? 那么今天就全面的来总结一下,在.NET生态下,如何玩爬 ...

  8. 《创业维艰分享之五》所有得,有所乐,日事日清,循序渐进。

    这两个月公司连续做了两个大客户紧接着发布新版本再然后又是连续五个小版本迭代计划. 每天16小时的超强度工作,我已经看到兄弟的脸上都写着一个字:累! 我自己又何尝不是,既是客服,又是程序员,还必须是行政 ...

  9. 计算机改变了我们的生活英语作文带翻译,一件事改变了我的生活的英语作文,带翻译,求帮忙,最好是符合初中三年级的英语作文...

    满意答案 niqwe0j8 2020.03.21 采纳率:44%    等级:7 已帮助:57人 One thing that changed my life completely was that ...

  10. 提示以演示模式运行_德事隆和IMSAR在小型无人机上集成并演示合成孔径雷达

    [据德事隆系统公司网站2019年2月18日公告]德事隆系统公司(德事隆)与IMSAR公司于2019年2月18日宣布,在德事隆系统公司的Aerosonde小型无人机上成功集成并演示了IMSAR公司的NS ...

最新文章

  1. list循环添加数据_List 去除重复数据的 5 种正确姿势!你知道几种?
  2. C#操作Sqlite快速入门及相关工具收集
  3. 利用 IHttpHandler 自定义 HTTP 处理程序
  4. [自爆系列]浅谈我对搜索的错误了解
  5. 在linux下添加路由
  6. OpenShift 4 - 基于URL的应用路由
  7. 日本研发圆滚滚的球形无人机,被LED屏团团包围
  8. AlphaGo Zero代码迟迟不开源,TF等不及自己推了一个
  9. 映美精IC Imageing Control .net控件调试问题
  10. China Unicom笔面试
  11. 【Python+Appium】开展自动化测试(八)swipe()滑动页面
  12. CODE CHINA
  13. Gitlab与Jaeger集成,实现Tracing链路追踪
  14. linux指法教程,linux系统指法练习与打字游戏软件
  15. 创新、变革以及你的有生之年
  16. 目前流行的个人台式计算机属于,[目前个人计算机的主要机型.doc
  17. 网络协议 -- UDP协议(2)单播
  18. firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作
  19. 决策树和期望货币价值
  20. 【GD32】GD32和STM32的区别

热门文章

  1. 跟工作选择障碍同学聊一聊现实的问题……
  2. 这个时代,开发简单多了
  3. 如何在原有的cookie里面添加值_【平面设计教程】如何创建一个漂亮又好吃的饼干呢?...
  4. swing怎么监听其他类的按钮_Swing舞出我人生 Vol.05 / 我想通过跳舞去寻找自己
  5. BAT脚本每隔30秒创建一个512兆文件(测试磁盘监控用)
  6. 进入顶尖行业的人,都是把职业当乐趣的
  7. 鸡啄米vc++2010系列25(滚动条控件Scroll Bar)
  8. OpenCV学习笔记(九) 重映射、仿射变换
  9. 【转】Office2003与Office2007/2010共存方法
  10. 2018.12.2 中国石油大学第一次新生训练赛题解