Android 建立Menu选单&&onOptionsItemSelected (转)
/** 当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 (转)的更多相关文章
- 实现Android半透明Menu效果的开发实例
不知道大家是否用过天天动听,对于它界面上的半透明Menu效果,笔者感觉非常漂亮.下面是天天动听半透明Menu的截图,欣赏下吧: 感觉还不错吧?那么如何实现这种半透明Menu效果呢?本文就重点讨论并给出 ...
- Android(java)学习笔记196:Android中Menu的使用(静态和动态)
1.使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于 ...
- Android中Menu的基本用法
一. 使用xml定义Menu 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于设置菜单项 ...
- 从零開始学android<Menu菜单组件.三十.>
在Android系统之中.菜单一共同拥有三类:选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 今天我们就用几个样例来分别介绍下菜单的使用 acti ...
- Android中Menu的基本使用方法
一. 使用xml定义Menu 菜单资源文件必须放在res/menu文件夹中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于设置菜单 ...
- Android添加Menu菜单
在安卓中添加Menu菜单十分简单. 步骤: 1.在menu文件夹中的main.xml文件中添加要添加的项目. <menu xmlns:android="http://schemas.a ...
- Android(java)学习笔记139:Android中Menu的使用(静态 和 动态)
1. 使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用 ...
- [Android] 建立与使用Library
[Android] 建立与使用Library 前言 使用Eclipse开发Android项目时,开发人员可以将可重用的程序代码,封装为Library来提供其他开发人员使用.本篇文章介绍如何将可重用的程 ...
- Android 按Menu弹出菜单
\res\anim\menu_in.xml 资源文件(动画) <?xml version="1.0" encoding="UTF-8"?> & ...
随机推荐
- React Native自适应设备宽度解决方案
px:设备实际像素单位 dp/pt:逻辑像素单位(IOS的尺寸单位为pt,Android的尺寸单位为dp) 在设计和开发过程中,应该尽量使用逻辑像素尺寸来思考界面. UI 给默认 640 的图,采用 ...
- 在.NET开发中的单元测试工具之——NUnit
NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...
- 银行卡号每隔4位插入空格 (再用户填写银行卡号的时候挺有用的) IE9+
链接 输入4为数字, 再输入一个数字调试一下就能看懂了 <head lang="en"> <meta charset="UTF-8"> ...
- I.MX6 PWM buzzer driver hacking with Demo test
/***************************************************************************** * I.MX6 PWM buzzer dr ...
- 软工2017第三周作业之找bug——测试报告
作业要求来自:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/957 环境:windows7 cmd命令行 要求1 bug计分.阅读 ...
- prisma graphql 工具基本使用
项目使用docker-compose mysql 运行 安装 npm insatll -g prisma or yarn global add prisma 创建代码 项目结构 ├── README. ...
- ballerina 学习二十三 扩展ballerina
扩展ballerina 目前有三种方式: 扩展client connector的包 (数据库访问,基础设施,api) 扩展server listenner 绑定为不同的协议 添加新的注解到baller ...
- System.Drawing.Drawing2D.LinearGradientBrush
https://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.lineargradientbrush(v=vs.110).aspx ...
- 【转】vim环境设置和自动对齐
原文网址:http://blog.chinaunix.net/uid-23525659-id-4340245.html 注:如果是用vim编写代码,建议开启vim的文件类型自动检测功能,这样编写代码换 ...
- FFMPEG结构体分析:AVCodecContext(转)
注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContext ...