`

Android中的onCreateOptionsMenu()方法和onOptionsItemSelected()方法示例

 
阅读更多

常见错误代码提示

Multiple markers at this line
- overrides
com.actionbarsherlock.app.SherlockActivity.onCreateOptionsMenu
- Cannot override the final method from SherlockActivity
- Method breakpoint:MainActivity [entry] - onCreateOptionsMenu(Menu)

 

解决方法

 

 

Android的onCreateOptionsMenu()创建菜单Menu详解

 

Android一共有三种形式的菜单:
1.选项菜单(optinosMenu)
2.上下文菜单(ContextMenu)
3.子菜单(subMenu)
其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来。

1.Activity菜单机制 (与dialog类似)
Activity有一套机制来实现对菜单的管理,方法如下:
   1.public boolean onCreateOptionsMenu(Menu menu)
此方法用于初始化菜单,其中menu参数就是即将要显示的Menu实例。
返回true则显示该menu,false 则不显示;
(只会在第一次初始化菜单时调用)

2.public boolean
onPrepareOptionsMenu(Menu menu)
onCreateOptionsMenu执行后,菜单被显示前调用;如果菜单已经被创建,则在菜单显示前被调用。
同样的, 返回true则显示该menu,false 则不显示;
(可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等)

3.public void onOptionsMenuClosed(Menu menu)
每次菜单被关闭时调用.
菜单被关闭有三种情形,menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项)

4.public boolean onOptionsItemSelected(MenuItem item)
菜单项被点击时调用,也就是菜单项的监听方法。

通过这几个方法,可以得知,对于Activity,同一时间只能显示和监听一个Menu 对象。


2. 添加菜单:

可以在onCreateOptionsMenu或者onPrepareOptionsMenu方法中来添加菜单

2.1代码添加:
menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID)

add()方法的四个参数,依次是:

1、组别,如果不分组的话就写Menu.NONE,

2、Id,这个很重要,Android根据这个Id来确定不同的菜单

3、顺序,哪个菜单项在前面由这个参数的大小决定

4、文本,菜单项的显示文本

add()方法返回的是MenuItem对象,调用其setIcon()方法,为相应MenuItem设置Icon


示例:
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, Menu.First+1, 0, "设置").setIcon(R.drawable.setting);
return true;
}

2.2布局文件添加:

getMenuInflater().inflate(R.menu.options_menu, menu);

调用Activity的getMenuInflater()得到一个MenuInflater,
使用inflate方法来把布局文件中的定义的菜单 加载给 第二个参数所对应的menu对象

示例:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.options_menu, menu);
return true;
}

布局文件:
在res目录下建立一个menu文件夹,并创建布局文件: options_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_setting" android:title="设置" android:icon="@drawable/setting"></item>
</menu>


3.菜单项监听:
只要菜单中的菜单项被点击,都会触发onOptionsItemSelected(MenuItem item)
item参数即为被点击的菜单项,那么需要在此方法内判断哪个Item被点击了,从而实现不同的操作。
对于两种不同的添加菜单方法,判断的方法有一点区别,但本质是一样的。

3.1代码添加菜单的判断方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch(item.getItemId())//得到被点击的item的itemId
{
case Menu.First+1: //对应的ID就是在add方法中所设定的Id
break;
case Menu.First+2:
break;
}
return true;
}

3.2布局文件添加菜单的判断方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch(item.getItemId())//得到被点击的item的itemId
{
case R.id.menu_setting://这里的Id就是布局文件中定义的Id,在用R.id.XXX的方法获取出来
break;
case R.id.menu_info:
break;
}
return true;
}

 

引用:http://blog.csdn.net/gengkunpeng/article/details/6307907

分享到:
评论

相关推荐

    Android onCreateOptionsMenu的使用方法总结

    首先,每个Android Activity都有与之关联的菜单,通过在Activity中重写 `onCreateOptionsMenu` 方法来创建和定制菜单。在该方法内,你需要调用 `Menu` 对象的 `add` 方法来添加菜单项。例如: ```java @Override ...

    android入门学习示例

    通过在Activity的onCreateOptionsMenu方法中创建并设置菜单项,你可以提供多种操作供用户选择。同时,别忘了在onOptionsItemSelected中处理用户的选择。 标签(Tab)是实现多页面切换的常用组件,尤其在Android的...

    Android 解决嵌套Fragment无法接收onCreateOptionsMenu事件的问题

    总之,解决Android嵌套Fragment无法接收到`onCreateOptionsMenu`事件的关键在于一级Fragment需要负责创建和管理所有的菜单项,并在`onOptionsItemSelected`事件中转发给当前显示的子Fragment处理。这种设计模式可以...

    Android的一些方法

    以上是关于Android开发中一些基础但非常重要的知识点和方法的详细介绍。对于初学者来说,掌握这些基本概念和技术是非常有帮助的。随着经验的积累,开发者还可以进一步探索更高级的主题,如自定义View、多线程处理等...

    android菜单使用示例

    在Android开发中,Menu是应用程序界面中的一个重要组成部分,它提供了...理解这些基本概念和方法,对于开发具有丰富交互功能的Android应用至关重要。通过实践和调试,开发者可以更好地掌握Menu的运用,提升用户体验。

    Android Toolbar 示例

    在Android应用开发中,`Toolbar`是一个非常重要的组件,它被设计用来替代传统的`Action Bar`,提供了更大的自定义性和灵活性。本示例程序展示了如何在Android活动中使用`Toolbar`来实现一个功能丰富的顶部导航栏。 ...

    Android ToolBar使用图标、菜单事件示例

    在这个示例中,我们将深入探讨如何使用`ToolBar`实现图标显示、设置标题以及处理菜单事件。 首先,为了在布局文件中添加`ToolBar`,我们需要在XML布局中声明一个`android.support.v7.widget.Toolbar`元素。例如: ...

    Android Toolbar简单示例

    本教程将通过一个简单的示例来介绍如何在Android应用中集成和使用Toolbar。 首先,我们需要在项目的布局XML文件中添加Toolbar组件。Toolbar是Android Support Library的一部分,所以我们需要确保项目已经依赖了这个...

    androidandroidandroid

    在Android应用的源代码中,`onCreateOptionsMenu`和`onOptionsItemSelected`方法是处理菜单选项的关键。`onCreateOptionsMenu`用于创建菜单项,`onOptionsItemSelected`则根据用户的选择执行相应的操作。在示例代码...

    Android Menu的设置方法

    本篇文章将详细介绍如何在Android中设置Menu,主要分为两种方法:通过Layout添加静态菜单元素和在Activity类中动态创建Menu。 **第一种方法:通过Layout添加静态菜单元素** 1. **创建XML布局文件**: 在`res/...

    Android_菜单(Menu)控件的使用.pdf

    在文档示例中,有两个菜单项“About”和“Exit”,分别代表“关于”和“退出”功能。 通过上述方法,开发者可以非常方便地在Android应用中添加和管理菜单,为用户提供丰富的交互体验。这些内容是入门Android开发...

    Android与XML编写菜单的例子.rar

    本示例主要关注如何使用XML和Java来编写Android应用程序中的菜单。让我们深入探讨一下这个话题。 首先,XML在Android中用于定义布局文件,这些文件描述了屏幕上的各种组件,如按钮、文本视图和菜单项。XML的结构化...

    Activity中的Menu使用总结示例源码

    在`TestActivityMenu`中,你可以看到`onCreateOptionsMenu()`和`onOptionsItemSelected()`的完整代码,以及可能的动态菜单添加和更新。具体实现细节会因项目需求而异,但基本结构应该遵循上述介绍。 总之,`Menu`是...

    android_menu.rar_android

    在“android_menu.rar”的示例中,可能包含了实现以上步骤的完整代码,包括菜单的创建、加载和事件处理。这个测试案例可以帮助开发者更好地理解Android菜单的用法,通过实际运行和调试,加深对菜单机制的理解。 ...

    Android中使用选项菜单模拟微信功能项目的代码清单.pdf

    1. 使用`onCreateOptionsMenu`和`onPrepareOptionsMenu`方法创建和准备选项菜单。 2. XML布局文件`R.menu.main`中定义菜单项。 3. 使用反射技术访问和修改Android内部类的私有方法。 4. `MenuItem`对象的创建和配置...

    Android应用源码之MenuSample.zip

    - 如果在Fragment中使用菜单,需要在Fragment中重写`onCreateOptionsMenu`和`onOptionsItemSelected`,并通知Activity。 通过分析MenuSample项目的源码,开发者可以深入理解Android菜单的生命周期、菜单项的事件...

    Android 导航栏设置 示例代码.zip

    在Android开发中,导航栏(通常称为ActionBar或Toolbar)是...这个示例项目提供了一个完整的Android应用框架,展示了如何在项目中集成和自定义导航栏。开发者可以基于此进行深入的个性化定制,以满足特定应用的需求。

    Android menu单选菜单.rar

    在`onCreateOptionsMenu()`方法中,通过`inflate()`函数加载XML资源,然后在`onOptionsItemSelected(MenuItem item)`方法中根据用户选择的菜单项进行相应操作。例如: ```java @Override public boolean ...

    解决Android4.0中菜单设置图标无效问题

    在Android中,菜单项是通过` onCreateOptionsMenu()`和` onOptionsItemSelected()`方法在`Activity`或`Fragment`中创建和处理的。我们通常使用`MenuItem`对象的`setIcon()`方法来设置图标。例如: ```java @...

    Android源码——menu单选菜单.zip

    在Android的菜单系统中,我们可以利用菜单资源(Menu Resource)来定义这些选项,并在Activity的onCreateOptionsMenu()方法中加载它们。 1. 创建菜单资源 在res/menu目录下创建一个XML文件,例如`menu_single_...

Global site tag (gtag.js) - Google Analytics