Android菜单详解(二)——创建并响应选项菜单
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android菜单详解(二)——创建并响应选项菜单,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3130字,纯文字阅读大概需要5分钟。
内容图文
![Android菜单详解(二)——创建并响应选项菜单](/upload/InfoBanner/zyjiaocheng/1133/dea86f1bf11d458984f182d167190a63.jpg)
Android菜单详解(二)——创建并响应选项菜单 - CodingMyWorld - 博客园
上一篇《Android菜单详解(一)——理解android中的menu》简单介绍了一下Android的菜单,今天让我们看一下如何通过代码创建和响应最常用的选项菜单(options menu)。
创建options menu
之前提到,Android的activity已经为我们提前创建好了android.view.Menu对象,并提供了回调方法onCreateOptionsMenu(Menu menu)供我们初始化菜单的内容。该方法只会在选项菜单第一次显示的时候被执行,如果你需要动态改变选项菜单的内容,请使用
onPrepareOptionsMenu(Menu)
。
@Override public boolean onCreateOptionsMenu(Menu menu) { // 调用父类方法来加入系统菜单 // 虽然目前android还没有系统菜单,但是为了兼容到以后的版本,最好加上 super .onCreateOptionsMenu(menu); // 添加菜单项(多种方式) // 1.直接指定标题 menu.add( " 菜单项1 " ); // 2.通过资源指定标题 menu.add(R.string.menuitem2); // 3.显示指定菜单项的组号、ID、排序号、标题 menu.add( 1 , // 组号 Menu.FIRST, // 唯一的ID号 Menu.FIRST, // 排序号 " 菜单项3 " ); // 标题 // 如果希望显示菜单,请返回true return true ; }
add (int groupId, int itemId, int order, CharSequence title)
上面的代码演示了添加菜单项的3种方法,下面解释下第三种方法。其中,第一个参数是组号,android中你可以给菜单分组,以便快速地操作同一组的菜单。第二个参数指定每个菜单项的唯一ID号,你可以自己指定,也可以让系统来自动分配,在响应菜单时你需要通过ID号来判断哪个菜单被点击了。因此常规的做法是定义一些ID常量,但在android中有更好的方法,就是通过资源文件来引用,这个之后介绍。第三个参数代表菜单项显示顺序的编号,编号小的显示在前面。
给菜单项分组
@Override public boolean onCreateOptionsMenu(Menu menu) { super .onCreateOptionsMenu(menu); // 添加4个菜单项,分成2组 int group1 = 1 ; int gourp2 = 2 ; menu.add(group1, 1 , 1 , " item 1 " ); menu.add(group1, 2 , 2 , " item 2 " ); menu.add(gourp2, 3 , 3 , " item 3 " ); menu.add(gourp2, 4 , 4 , " item 4 " ); // 显示菜单 return true ; }你可以向上面这样给菜单项分组,分组之后就能使用menu中提供的方法对组进行操作了,如下:
menu.removeGroup(group1); // 删除一组菜单 menu.setGroupVisible(gourp2, visible); // 设置一组菜单是否可见 menu.setGroupEnabled(gourp2, enabled); // 设置一组菜单是否可点 menu.setGroupCheckable(gourp2, checkable, exclusive); // 设置一组菜单的勾选情况响应菜单项
android提供了多种响应菜单项的方式,下面一一介绍
1、通过onOptionsItemSelected方法
使用的最多方法是重写activity类的
onOptionsItemSelected(MenuItem)
回调方法,每当有菜单项被点击时,android就会调用该方法,并传入被点击菜单项。@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // 响应每个菜单项(通过菜单项的ID) case 1 : // do something here break ; case 2 : // do something here break ; case 3 : // do something here break ; case 4 : // do something here break ; default : // 对没有处理的事件,交给父类来处理 return super .onOptionsItemSelected(item); } // 返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了 return true ; }以上代码可作为使用onOptionsItemSelected方法响应菜单的模板来使用,这里为了方便起见将菜单ID硬编码在程序里,你可以使用常量或资源ID来使代码更健壮。
2.使用监听器
虽然第一种方法是推荐使用的方法,android还是提供了类似java swing的监听器方式来响应菜单。使用监听器的方式分为两步:
// 第一步:创建监听器类 class MyMenuItemClickListener implements OnMenuItemClickListener { @Override public boolean onMenuItemClick(MenuItem item) { // do something here... return true ; // finish handling } } // 第二步:为菜单项注册监听器 menuItem.setOnMenuItemClickListener( new MyMenuItemClickListener());android文档对onMenuItemClick(MenuItemitem)回调方法的说明是"Called when a menu item has been invoked. This is the first code that is executed; if it returns true, no other callbacks will be executed." 可见该方法先于onOptionsItemSelected执行。
3.使用Intent响应菜单
第3种方式是直接在MenuItem上调用 setIntent (Intent intent)方法,这样android会自动在该菜单被点击时调用
startActivity(Intent)
。但是个人认为与其这样还不如直接在onOptionsItemSelected的case里手动调用startActivity(Intent)
来的直观。结语
本文详细介绍了如何创建和响应选项菜单,下一篇《Android菜单详解(三)——SubMenu和IconMenu》将继续介绍子菜单和图标菜单的使用。
原文:http://www.cnblogs.com/seven1979/p/4364968.html
内容总结
以上是互联网集市为您收集整理的Android菜单详解(二)——创建并响应选项菜单全部内容,希望文章能够帮你解决Android菜单详解(二)——创建并响应选项菜单所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。