/** 当Menu有命令被选择时,会调用此方法 */

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case ADD_ID:

setTitle("添加");// 将title设置为"添加"

break;

case DELETE_ID:

setTitle("删除");// 将title设置为"删除"

break;

case EXIT_ID:

finish();// 退出程序

break;

}

// 返回false允许正常的菜单处理资源,若返回true,则直接在此毁灭它

return super.onOptionsItemSelected(item);

}

}

package com.misoo;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

public class ex01 extends Activity {

/** 给定各菜单项对应ID值,以区别之,能保证这些值不同就行了 */

public static final int ADD_ID = Menu.FIRST;// 添加命令对应ID值

public static final int DELETE_ID = Menu.FIRST + 1;// 删除命令对应ID值

public static final int EXIT_ID = Menu.FIRST + 2;// 退出命令对应ID值

/** 当activity首次被创建时被调用 */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);// 根据main.xml的布局来显示

}

/** 只有当Menu菜单首次被显示时会调用此方法 */

@Override

public boolean onCreateOptionsMenu(Menu menu) {

boolean b = super.onCreateOptionsMenu(menu);

/**

* menu.add(int groupId, int itemId, int order, CharSequence title)

* groupId为组ID,这里用不到,所以设置成Menu.NONE

* itemId为项ID,当命令被点击时,要区别点击的命令,所以设置以不同的ID

* order为排列次序,值越小排的越前(不能为负数),这里按添加顺序排,所以也设置成Menu.NONE

* title为要显示的命令名称,这里是根据res/values/strings.xml的name名称去取相应的value

* 估计这样处理是为了日后若要更改这些值,就直接在XML里修改,可以不必改动代码

*/

menu.add(Menu.NONE, ADD_ID, Menu.NONE, R.string.menu_add);

menu.add(Menu.NONE, DELETE_ID, Menu.NONE, R.string.menu_delete);

menu.add(Menu.NONE, EXIT_ID, Menu.NONE, R.string.menu_exit);

return b;// 如果返回值不为true,则Menu菜单将不会显示

}

/** 当每次Menu显示时,会调用此方法 此例中没用到*/

@Override

public boolean onPrepareOptionsMenu(Menu menu) {

return super.onPrepareOptionsMenu(menu);

}

/** 当每次Menu关闭时,会调用此方法 此例中没用到*/

@Override

public void onOptionsMenuClosed(Menu menu) {

super.onOptionsMenuClosed(menu);

}

/** 当Menu有命令被选择时,会调用此方法 */

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case ADD_ID:

setTitle("添加");// 将title设置为"添加"

break;

case DELETE_ID:

setTitle("删除");// 将title设置为"删除"

break;

case EXIT_ID:

finish();// 退出程序

break;

}

// 返回false允许正常的菜单处理资源,若返回true,则直接在此毁灭它

return super.onOptionsItemSelected(item);

}

}

下边为res/values/string.xml

view plaincopy to clipboardprint?

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">Hello World, ex01!</string>

<string name="app_name">ex01</string>

<string name="menu_add">Add Item</string>

<string name="menu_delete">Del Item</string>

<string name="menu_exit">Exit</string>

</resources>

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kf156/archive/2009/08/12/4436594.aspx

menu.add的方法中的参数:

第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。可以用到的方法有:
removeGroup(id)
setGroupCheckable(id, checkable, exclusive)
setGroupEnabled(id,boolean enabled)
setGroupVisible(id,visible)
个人认为,当你需要在不同场合下显示不同的menu的时候,合理使用这个参数将更为有效的处理菜单的显示。否则一般情况下都归为一组。
第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个Menu中的选项。在后面使用菜单的时候,就是靠这个item ID来判断,你选中的是哪个选项。
第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的顺序来显示。
第四个String类型的title参数,表示选项中显示的文字。
再看看setIcon方法,就是为菜单添加图标显示,使用用资源文件。

转自: http://blog.csdn.net/a_moon721/article/details/5880260

Android 建立Menu选单&&onOptionsItemSelected (转)的更多相关文章

  1. 实现Android半透明Menu效果的开发实例

    不知道大家是否用过天天动听,对于它界面上的半透明Menu效果,笔者感觉非常漂亮.下面是天天动听半透明Menu的截图,欣赏下吧: 感觉还不错吧?那么如何实现这种半透明Menu效果呢?本文就重点讨论并给出 ...

  2. Android(java)学习笔记196:Android中Menu的使用(静态和动态)

    1.使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于 ...

  3. Android中Menu的基本用法

    一. 使用xml定义Menu 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于设置菜单项 ...

  4. 从零開始学android&lt;Menu菜单组件.三十.&gt;

    在Android系统之中.菜单一共同拥有三类:选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 今天我们就用几个样例来分别介绍下菜单的使用 acti ...

  5. Android中Menu的基本使用方法

    一. 使用xml定义Menu 菜单资源文件必须放在res/menu文件夹中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于设置菜单 ...

  6. Android添加Menu菜单

    在安卓中添加Menu菜单十分简单. 步骤: 1.在menu文件夹中的main.xml文件中添加要添加的项目. <menu xmlns:android="http://schemas.a ...

  7. Android(java)学习笔记139:Android中Menu的使用(静态 和 动态)

    1. 使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用 ...

  8. [Android] 建立与使用Library

    [Android] 建立与使用Library 前言 使用Eclipse开发Android项目时,开发人员可以将可重用的程序代码,封装为Library来提供其他开发人员使用.本篇文章介绍如何将可重用的程 ...

  9. Android 按Menu弹出菜单

    \res\anim\menu_in.xml    资源文件(动画) <?xml version="1.0" encoding="UTF-8"?> & ...

随机推荐

  1. python 发送QQ邮件的小例子

    首先QQ邮件用第三方客户端发送要申请验证码.而不是QQ的密码. 授权码就是你接下来登录要使用的密码 那么剩下的工作就很简单了.附简单代码如下: #coding:utf-8 import smtplib ...

  2. Linux:root下的文件-anaconda-ks.cfg详解

    anaconda-ks.cfg详解 系统安装的时候生成的一个文件,通过这个文件可以修改成自动安装的脚本,用于自动安装同样配置的系统. 自动生成的启动文件anaconda# Kickstart file ...

  3. 使用c++实现一个FTP客户端(一)

    之前使用c++实现了一个FTP客户端,在这里做一些记录. 一.需要注意的几点 ①FTP是一种文件传输协议,基于TCP,所以客户端与服务器建立的连接是可靠.安全的,并且要经过三次握手的过程. ②FTP传 ...

  4. [置顶] VS 2017 众多重构插件

    孙广东  2017.7.22 http://blog.csdn.NET/u010019717 1.没有任何插件的情况下:  (就是Ctrl + .)   注意:这个.  要是英文的才行! 右键菜单也是 ...

  5. Zabbix proxy 3.2安装部署

    zabbix proxy 前提环境: CentOS 6 LNMP(php) 版本:Zabbix-3.2.3 proxy安装 yum install -y net-snmp \ net-snmp-dev ...

  6. springboot整合mybatis增删改查(二):springboot热部署

    SpringBoot整合热部署 传统情况下, 我们用idea运行springboot程序时, 如果我们需要修改类里的方法,或者其他信息 我们需要修改完保存,并且重启springboot,有时候会很浪费 ...

  7. UT源码+105032014070

    设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等腰直角 ...

  8. python(五):面向对象--类和实例

    一.类的基本概念 类是用来创建数据结构和新类型对象的主要机制.一个类定义了一系列与其实例对象密切关联的属性.典型的属性包括变量(也被称为 类变量)和函数(又被称为方法). 1.class上下文 cla ...

  9. Idea问题记录

    1.warning提示idea found duplicate code 打开 Settings → Editor → Inspections. 在出现的搜索栏处搜索 Duplicated Code ...

  10. flask第二十七篇——九九乘法表

    请关注公众号:自动化测试实战 九九乘法表其实很容易: <table border="1"> <tbody> {% for x in range(1, 10) ...