`
flycomos.lee
  • 浏览: 280497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

onCreateOptionsMenu和onPrepareOptionsMenu的差別在哪呢?

阅读更多

在做菜单的功能,发现,菜单越来越多,后来仔细看了他们的区别,如下:

 

但是onCreateOptionsMenuonPrepareOptionsMenu 的差別在哪呢?

android中可以重写activity的两个方法进行创建菜单:onPrepareOptionsMenu(Menu menu),onCreateOptionsMenu。

两种方法的区别是,前者是每次点击menu键都会重新调用,所以,如果菜单需要更新的话,就用此方法。而后者只是在activity创建的时候执行一次。

值得注意的是,在使用前者的时候,如果你每次都调用了menu.add()方法的话,那么菜单中的项目就会越来越多,所以,一般情况下是要调用一下menu.clear()的。



onCreateOptionsMenu
  只會呼叫 一次,他只會在MENU顯示之前,去做一次!!!之後就不會再去呼叫!


onPrepareOptionsMenu
  onPrepareOptionsMenu是每次在display menu之前,都會去呼叫,
  只要按一次menu按鍵,就會呼叫一次。
  所以你會發現每次只要按一次menu按鍵,
  menu選單就會多兩個(因為我們預設是兩個)
  你可以利用onPrepareOptionsMenu來做update menu狀態的動作

如果你要把menu現有的option清空,就是下面那行CODE

menu.clear();

 

还有,在fragment中的onCreateOptionsMenu和Activity中的参数不同的,多了个MenuInflater,所以在fragment中调用MenuInflater的时候,要这么调用:

MenuInflater inflater = this.getActivity().getMenuInflater();

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// 在onCreateOptionsMenu()之前必须在onCreate中调用setHasOptionsMenu(true)
inflater.inflate(R.menu.menu_three, menu);   
super.onCreateOptionsMenu(menu, inflater);
}

分享到:
评论

相关推荐

    Android使用onCreateOptionsMenu()创建菜单Menu的方法详解

    1. 代码添加:在`onCreateOptionsMenu`或`onPrepareOptionsMenu`中使用`menu.add()`方法。例如: ```java public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(Menu....

    Android中常用包结构介绍

    创建选项菜单通常在onCreateOptionsMenu和onPrepareOptionsMenu方法中完成,而上下文菜单则需要先通过registerForContextMenu注册,然后在onCreateContextMenu中定义。菜单项的点击事件通常通过...

    A0242动态改变菜单OptionsMenuModify1

    开发者可以使用`onCreateOptionsMenu()`和`onPrepareOptionsMenu()`这两个生命周期方法来创建和更新菜单。`onCreateOptionsMenu()`用于首次创建菜单,而`onPrepareOptionsMenu()`则在每次菜单显示前调用,为动态调整...

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

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

    Sample_9_1.rar_android_android submenu_android 菜单_onCreateOption

    OnCreateOptionsMenu()和OnOptionsMenuSelected()是Activity中提供的两个回调方法,用于创建菜单项和响应菜单项的点击。onOptionsMenuClosed菜单关闭后发生的动作 onPrepareOptionsMenu选项菜单显示之前...

    Android安卓经典设计例程源代码-MenuXmlSample.rar

    在Activity中,菜单的生命周期与`onCreateOptionsMenu()`、`onPrepareOptionsMenu()`和`onOptionsItemSelected()`三个方法紧密关联。`onCreateOptionsMenu()`在首次显示菜单时被调用,用于加载和初始化菜单资源。`...

    安卓Android源码——MyOptionMenu.rar

    - 它基于 `Menu` 类,可以通过在 `onCreateOptionsMenu()` 和 `onPrepareOptionsMenu()` 方法中填充菜单项。 2. **自定义 OptionMenu** - `MyOptionMenu` 可能是开发者为了实现特定设计或交互而创建的自定义菜单...

    Android安卓经典设计例程源代码-MenuItemSample.rar

    在Android应用中,我们通常在`onCreateOptionsMenu()`或`onPrepareOptionsMenu()`方法中定义和配置`MenuItem`。例如: ```java @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater()....

    动态添加菜单的资源代码

    要动态添加菜单项,我们需要在`onPrepareOptionsMenu()`或`onCreateOptionsMenu()`方法中使用`Menu.add()`方法。这个方法接受四个参数:组ID、菜单ID、菜单项的顺序号(用于排序)和标题。 ```java MenuItem ...

    Android基本视图

    - 选项菜单(Menu):在屏幕顶部显示,可以通过onCreateOptionsMenu和onPrepareOptionsMenu创建。 - 子菜单(SubMenu):选项菜单中的嵌套菜单。 - 上下文菜单(ContextMenu):针对特定视图显示,使用...

    Android应用源码之游戏菜单进度条.zip

    `Menu`对象可以通过`onCreateOptionsMenu()`或`onPrepareOptionsMenu()`方法在活动中创建。菜单项可以定义在XML布局文件中,然后在活动中通过`inflate()`方法加载。例如,一个简单的菜单XML可能包含`<item>`标签,每...

    Android安卓经典设计例程源代码-MenuSample.rar

    在Activity的`onCreateOptionsMenu()`方法中,我们通常会使用`MenuInflater`的`inflate()`方法,将XML菜单布局加载到活动的菜单实例中。 3. **菜单的显示** 菜单在界面上的显示通常与`ActionBar`或`Toolbar`关联。...

    Android应用源码之MenuSample.zip

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

    Android Menu的设置方法

    你可以直接在`onCreateOptionsMenu`方法中创建并添加菜单项,但这种方法相比XML布局文件会更繁琐,因为每个菜单项都需要手动创建和配置。 总的来说,静态菜单通过XML布局文件创建,易于维护和扩展,而动态创建则...

    Android应用源码之菜单动画(类似QQ空间)Demo.zip

    开发者可能在`onCreateOptionsMenu`或`onPrepareOptionsMenu`方法中动态添加菜单项,并在`onOptionsItemSelected`中处理菜单项的点击事件。 最后,为了实现动画效果,开发者可能运用了`Interpolator`(插值器)来...

    Android menu单选菜单.rar

    2. **生命周期**: Menu与Activity的生命周期紧密相关,主要涉及`onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, 和 `onOptionsItemSelected()` 三个方法。 - `onCreateOptionsMenu(Menu menu)`: 在需要显示...

    安卓Android源码——MenuSample.rar

    3. **菜单的生命周期**:在Activity中,菜单的生命周期与Activity的onCreateOptionsMenu()、onPrepareOptionsMenu()和onOptionsItemSelected()方法紧密关联。onCreateOptionsMenu()用于初始化菜单,...

    Android 动态更新Menu菜单

    在Android应用开发中,Menu菜单通常用于在Activity的顶部或者底部提供操作选项,方便用户进行交互。动态更新Menu菜单是一项重要的功能,它允许我们在运行时根据应用的状态或用户行为来改变菜单项,提供更加灵活的...

    Android应用源码之MenuXmlSample-IT计算机-毕业设计.zip

    【Android应用源码之MenuXmlSample】是一个针对Android平台的毕业设计示例项目,它主要展示了如何在Android应用中使用XML来定义和管理菜单。在Android应用开发中,菜单是提供用户操作的重要部分,通常在选项栏或者上...

    Android源码自动判断特定位置的弹出导航菜单.zip

    在Android中,菜单通常是通过在Activity或Fragment中调用`onCreateOptionsMenu()`方法来创建的。这个方法会返回一个`Menu`对象,开发者可以通过`MenuInflater`填充菜单项。例如: ```java @Override public boolean...

Global site tag (gtag.js) - Google Analytics