/** 当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. 免费获取 Kaspersky Small Office Security 90 天授权

    Kaspersky Small Office Security 是卡巴斯基出品的企业版杀毒软件,目前美国官网上官方有赠送活动,能够免费获取 90 天的授权,但必须要使用美国代理. 获取地址:http: ...

  2. CentOS7禁用IPV6

    禁用IPV6的操作步骤 Step 1: add this rule in /etc/sysctl.conf : net.ipv6.conf.all.disable_ipv6=1 Step 2: add ...

  3. Eclipse中使用Maven,报错“$MAVEN_HOME”

    1.今天在用eclipse时,执行maven命令,报错,如图"$MAVEN_HOME" 解决方案: 1.点击 windows---preferences,打开preferences ...

  4. Python数据类型-01.数字和布尔值

    本节主要介绍Python中的基础知识中的数据类型,数字和布尔值 介绍几个知识点:1)内置函数print()的用法,直接打印括号里面的内容,或者print后跟多个输出,以逗号分隔.2)内置函数type( ...

  5. Windows下Java JDK8配置环境变量

    JDK最新版已经出到了jdk8u60,下载安装完成后,还需要配置环境变量,下面小编就给大家分享下jdk 8.0的环境变量配置教程,希望大家喜欢. jdk8.0环境变量配置教程 右键选择 计算机→属性→ ...

  6. CMS初步认识

    一CMS本质 [1]基本思想是:分离内容的管理和设计,页面显示的风格和框架存储在模板里.至于页面显示的内容存储在数据库中或一个独立的文件中.当一个用户请求页面时,各部分联合生成一个标准的 HTML 页 ...

  7. 0302 IT行业就业与软件工程

    阅读以下文章 http://www.thea.cn/news/terminal/9/9389.html http://www.shzhidao.cn/system/2015/09/22/0102610 ...

  8. oracle10g精简版安装步骤

     Feng218 假设出现例如以下错误: 最好把360安全卫士全关了.再安装下.就没事了 然后安装完了进入时输入username:sys或者system password就是自己设好的passwo ...

  9. CentOS 7 安装Memcached服务

    Memcached 简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站 ...

  10. java.lang.NumberFormatException:For input string:"undefined"

    在将字符串转换为数字时导致此错误,解决此问题的思路: 1.添加 try catch语句 2.判断字符串是否为数字,将介绍java中判断字符串是否为数字的方法的几种方法 发生错误的代码: java.la ...