/** 当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. 爬虫框架:scrapy

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...

  2. 201621123006 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网 ...

  3. centos 搭建 docker sentry

    1.安装 http://blog.51cto.com/linuxg/2052927 2 .实际调试: 项目: <title>hghh</title> <script sr ...

  4. Yii 入门

    跳转到不同module Redirect to module after login Yii $this->redirect( array('/tradesman/default/index') ...

  5. ubuntu 11.04 old sources.list

    #deb cdrom:[Ubuntu 11.04 _Natty Narwhal_ - Release amd64 (20110427.1)]/ natty main restricted # See ...

  6. .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)

    我们有很多种方法评估一个方法的执行耗时,比如使用性能分析工具,使用基准性能测试.不过传统的在代码中编写计时的方式依然有效,因为它可以生产环境或用户端得到真实环境下的执行耗时. 如果你希望在 .NET/ ...

  7. test20181020 B君的第一题

    题意 分析 二次剩余问题. x,y相当于二次方程 \[ x^2-bx+c=0 \mod{p} \] 的两根. 摸意义下的二次方程仍然考虑判别式\(\Delta=b^2-4c\). 它能开根的条件是\( ...

  8. linux之 LVM扩容

    1. 查看本机现在磁盘的情况[root@oralce10g ~]# df Filesystem 1K-blocks Used Available Use% Mounted on/dev/mapper/ ...

  9. 【linux】du命令

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  10. TF54000: 由于服务器时钟设置可能不正确,无法更新数据解决方案(补充)

    此问题出现的原因: 服务器时间比本地时间大.由于TFS源代码的Source Control会根据签入时间做判断.如果后续签入的时间小于变更集的最新版本的时间,就会报错误“TF54000”,并拒绝签入. ...