安卓开发中菜单
2013-11-28 21:04
85 查看
处理选项动作
"onCreateOptionsMenu" 函数即菜单列的主体。在 Android 机器或模拟器上按下硬体 的"Menu"( 菜单 ) 键,所弹出的菜单列即是靠 "onCreateOptionsMenu" 函数来定义。当我们在Activity 中定义了"onCreateOptionsMenu" 之后,按下"Menu"( 菜单 ) 键时,就会弹出相对应的菜单列。当我们在 Android 应用程序的菜单列上选择了相应的选项后,则是依赖"onOptionsItemSelected" 函数,来负责处理菜单列中各选项所个别对应的动作。
Android的activity已经为我们提前创建好了android.view.Menu对象,并提供了回调方法onCreateOptionsMenu(Menu menu)供我们初始化菜单的内容。该方法只会在选项菜单第一次显示的时候被执行,如果你需要动态改变选项菜单的内容,请使用onPrepareOptionsMenu(Menu)。
public boolean onPrepareOptionsMenu(Menumenu) {//动态的修改菜单title
MenuItemitem=menu.findItem(SAVE_AS);
item.setTitle(item.getTitle()+""+i);
i++;
returnsuper.onPrepareOptionsMenu(menu);
}
代码创建和响应最常用的选项菜单:
publicboolean 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
returntrue;
}
上面的Menu.FIRST是
上面的代码演示了添加菜单项的3种方法,下面解释下第三种方法add(intgroupId, int itemId, int
order,CharSequence title)。其中,第一个参数是组号,android中你可以给菜单分组,以便快速地操作同一组的菜单。第二个参数指定每个菜单项的唯一ID号,你可以自己指定,也可以让系统来自动分配,在响应菜单时你需要通过ID号来判断哪个菜单被点击了。因此常规的做法是定义一些ID常量,但在android中有更好的方法,就是通过资源文件来引用,这个之后介绍。第三个参数代表菜单项显示顺序的编号,编号小的显示在前面。
使用xml生成菜单:
Options_menu.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/newFile"
android:icon="@drawable/ic_launcher"
android:title="@string/newFile"/>
<!-- android:icon 设置菜单选项的图标
android:title 设置菜单选项的标题 -->
<item
android:id="@+id/exit"
android:icon="@drawable/ic_launcher"
android:title="@string/exit"/>
</menu>
在activity中加上下面这两句:
MenuInflaterinflater=this.getMenuInflater();
inflater.inflate(R.menu.options_menu,menu);
xml相应的菜单就会加入进去
*********************************************************************************************************************
下面是补充的:::
***************************************************************************
当系统第一次创建选项菜单时,它调用你的activity的方法 onCreateOptionsMenu() . 重写这个方法并且为传入的参数 Menu 创建实例.Menu 是通过inflate一个菜单资源创建的,如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.game_menu, menu);
return true;
}你也可以在代码中产生menu,然后使用方法 add() 添加菜单项.
当用户选择一个菜单项 (也包括Action Bar上的动作项), 系统会调用你的activity的方法 onOptionsItemSelected() .这个方法会在参数中传入选择的菜单项.你可以通过调用方法getItemId()定位这个菜单项 ,这个方法会返回菜单项的唯一ID (在菜单资源文件中以android:id属性定义或在调用方法add()时传入的整数). 你可以使用已知的菜单项来匹配这个ID并执行相关的动作,例如:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
newGame();
return true;
case R.id.help:
showHelp();
return true;
default:
return super.onOptionsItemSelected(item);
}
}在 这个例子中, getItemId() 获取所选菜单项的ID并在switch语句中与资源文件中所有菜单ID比较。当switch语句中成功处理了菜单项,就返回 true 以表明所选 的菜单项被处理了。否则,default 语句会把菜单项传给父类,也许父类会处理这个菜单项 (如果你直接从 Activity派生,那么父类会返回false, 但是把未处理的菜单项传给父类而不是直接返回false是一个好习惯.)
"onCreateOptionsMenu" 函数即菜单列的主体。在 Android 机器或模拟器上按下硬体 的"Menu"( 菜单 ) 键,所弹出的菜单列即是靠 "onCreateOptionsMenu" 函数来定义。当我们在Activity 中定义了"onCreateOptionsMenu" 之后,按下"Menu"( 菜单 ) 键时,就会弹出相对应的菜单列。当我们在 Android 应用程序的菜单列上选择了相应的选项后,则是依赖"onOptionsItemSelected" 函数,来负责处理菜单列中各选项所个别对应的动作。
Android的activity已经为我们提前创建好了android.view.Menu对象,并提供了回调方法onCreateOptionsMenu(Menu menu)供我们初始化菜单的内容。该方法只会在选项菜单第一次显示的时候被执行,如果你需要动态改变选项菜单的内容,请使用onPrepareOptionsMenu(Menu)。
public boolean onPrepareOptionsMenu(Menumenu) {//动态的修改菜单title
MenuItemitem=menu.findItem(SAVE_AS);
item.setTitle(item.getTitle()+""+i);
i++;
returnsuper.onPrepareOptionsMenu(menu);
}
代码创建和响应最常用的选项菜单:
publicboolean 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
returntrue;
}
上面的Menu.FIRST是
private static final int INSERT_ID = Menu.FIRST
上面的代码演示了添加菜单项的3种方法,下面解释下第三种方法add(intgroupId, int itemId, intorder,CharSequence title)。其中,第一个参数是组号,android中你可以给菜单分组,以便快速地操作同一组的菜单。第二个参数指定每个菜单项的唯一ID号,你可以自己指定,也可以让系统来自动分配,在响应菜单时你需要通过ID号来判断哪个菜单被点击了。因此常规的做法是定义一些ID常量,但在android中有更好的方法,就是通过资源文件来引用,这个之后介绍。第三个参数代表菜单项显示顺序的编号,编号小的显示在前面。
使用xml生成菜单:
Options_menu.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/newFile"
android:icon="@drawable/ic_launcher"
android:title="@string/newFile"/>
<!-- android:icon 设置菜单选项的图标
android:title 设置菜单选项的标题 -->
<item
android:id="@+id/exit"
android:icon="@drawable/ic_launcher"
android:title="@string/exit"/>
</menu>
在activity中加上下面这两句:
MenuInflaterinflater=this.getMenuInflater();
inflater.inflate(R.menu.options_menu,menu);
xml相应的菜单就会加入进去
*********************************************************************************************************************
下面是补充的:::
***************************************************************************
当系统第一次创建选项菜单时,它调用你的activity的方法 onCreateOptionsMenu() . 重写这个方法并且为传入的参数 Menu 创建实例.Menu 是通过inflate一个菜单资源创建的,如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.game_menu, menu);
return true;
}你也可以在代码中产生menu,然后使用方法 add() 添加菜单项.
当用户选择一个菜单项 (也包括Action Bar上的动作项), 系统会调用你的activity的方法 onOptionsItemSelected() .这个方法会在参数中传入选择的菜单项.你可以通过调用方法getItemId()定位这个菜单项 ,这个方法会返回菜单项的唯一ID (在菜单资源文件中以android:id属性定义或在调用方法add()时传入的整数). 你可以使用已知的菜单项来匹配这个ID并执行相关的动作,例如:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
newGame();
return true;
case R.id.help:
showHelp();
return true;
default:
return super.onOptionsItemSelected(item);
}
}在 这个例子中, getItemId() 获取所选菜单项的ID并在switch语句中与资源文件中所有菜单ID比较。当switch语句中成功处理了菜单项,就返回 true 以表明所选 的菜单项被处理了。否则,default 语句会把菜单项传给父类,也许父类会处理这个菜单项 (如果你直接从 Activity派生,那么父类会返回false, 但是把未处理的菜单项传给父类而不是直接返回false是一个好习惯.)
相关文章推荐
- 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)
- 安卓开发中在活动中创建菜单
- 安卓开发-ListView侧拉菜单,置顶等仿QQ侧拉菜单侧拉点击切换图片,侧拉点击事件带上拉加载更多,下拉刷新
- 安卓开发-使用XML菜单布局简单介绍
- 安卓开发笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)
- 安卓开发复习笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)
- 安卓开发笔记——Menu菜单组件(选项菜单,上下文菜单,子菜单)
- 安卓开发--左侧或右侧出来的popuwindows替代drawerlayout侧拉菜单
- 安卓开发笔记——TabHost组件(二)(实现底部菜单导航)
- 安卓项目开发实战(1)--首页顶部菜单BAR实现
- 【安卓】安卓App开发思路 一步一个脚印(二)FragmentTabHost实现底部的菜单
- 安卓项目开发实战(1)续--首页顶部菜单用actionbar实现
- 安卓开发_浅谈OptionsMenus(选项菜单)
- 关于安卓开发实现侧滑菜单效果
- [安卓开发]在有物理按键的设备上依旧在Action Bar中显示虚拟菜单键
- 安卓开发:自定义PopupWindow,实现模仿iOS底部弹出菜单
- 安卓开发(二)ListView显示菜单,SQLite存储和ListView显示
- 安卓开发学习之013 EditText应用详解(样式、背景、光标、错误提示、自定义带删除按钮、无弹出菜单)
- 安卓手机如何打开“开发人员选项”菜单
- 安卓开发:创建带子菜单的选项菜单