`
flycomos.lee
  • 浏览: 275996 次
  • 性别: 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的使用方法总结

    主要介绍了Android onCreateOptionsMenu的使用方法总结的相关资料,在Android下,每一个activity都捆绑了一个Menu,要想定义和使用菜单,都必须在Activity下进行操作,需要的朋友可以参考下

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

    本文主要介绍Android Fragment无法接收onCreateOptionsMenu事件的问题,这里给出解决办法以及详细代码,希望能帮助有需要的小伙伴

    Sample_9_1.rar_android_android submenu_android 菜单_onCreateOption

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

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

    主要介绍了Android使用onCreateOptionsMenu()创建菜单Menu的方法,结合实例形式较为详细的分析了Android基于onCreateOptionsMenu创建菜单的具体步骤与相关操作技巧,需要的朋友可以参考下

    Android动态添加menu菜单的简单方法

    1、onCreateOptionsMenu(Menu menu)2、onPrepareOptionsMenu(Menu menu)3、onOptionsItemSelected(MenuItem item) 方法名 触发时间onCreateOptionsMenu 进入Launcher后第一次点MENU按钮时触发onPrepareOptionsMenu ...

    RefreshMenuItem-在actionbar上显示加载与刷新图标.zip

    RefreshMenuItem可以在actionbar上显示加载与刷新图标,它简化了需要刷新与加载界面的开发流程。项目地址:https://github.com/nicolasjafelle/RefreshMenuItem 效果图:使用说明:在activity或者fragment中实例化...

    Android查单词-集成英文词典和联系人.rar

    一个运行android手机的小程序,Android查单词-集成了英文词典和联系人信息,在文本框中输入需要查询的词即可以使用。在联系人列表中,单击选项菜单可删除联系人,这几个操作的具体代码为:  public boolean ...

    Android:Handler的post()方法和Thread的start()方法执行Thread的run()方法的区别

    * 在java中真正开启线程的方法是这样的。 */ Thread t = new Thread(r); t.start(); setContentView(R.layout.activity_main); System.out.println("Activity-->"+ Thread.currentThread().getId()...

    Android菜单操作之创建并响应菜单

    上一篇《学习理解Android菜单Menu操作》简单介绍了一下Android的...该方法只会在选项菜单第一次显示的时候被执行,如果你需要动态改变选项菜单的内容,请使用 onPrepareOptionsMenu(Menu)。 @Override publicboolean

    Android小应用

     灵活使用DatePicker和TimePicker控件 2. 为用户界面添加验证功能  获取 startdate starttime enddate endtime  为button添加click事件来进行验证 3. 处理应用中的数据  创建noTask/TaskList界面用来逐条...

    android 面试2

    2. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?  答:在系统回收或者用户调用finish方法,都会销毁Activity,此时会调用onDestroy方法,利用onDestroy方法保存Activity状态  3...

    Android中使用Menu

    在Android活动中使用Menu,简单的程序。适应于初学者。 通过res中创建Menu文件,在Activity中通过onCreateOptionsMenu()方法和onOptionsItemSelected()方法实现菜单栏功能

    在活动中使用Menu

    在上一章中创建你的第一个Android...HelloWorldActivity中自动创建了一个onCreateOptionsMenu()方法。这个方法是用于在活动 中创建菜单的,由于当时我们的重点不在这里,所以直接先忽略了,现在可以来仔细分析一 下了。

    如何在XML中定义菜单

    通过在菜单的onCreateOptionsMenu方法中膨胀菜单layout。这样做会使我们的程序代码简单多了,而且尽可能的将更多的界面设计部分放到XML,便于浏览。 1. 在工程的/res/文件夹下创建menu文件夹,用来保存你为应用程序...

    Android实现为Tab添加Menu的方法

    这样就可以在主事件中直接重写OnCreateOptionsMenu方法,为程序添加Menu。如果每个Tab需要有不同的Menu,可以为TabHost添加一个OnTabChangedListener,在这个Listener中对一个全局变量(比如intMenuNumber)进行修改...

    在Android中创建菜单项Menu以及获取手机分辨率的解决方法

    在Activity中覆写下面两个方法: 代码如下: // 创建菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, “关于”); // menu.add(int groupId, int itemId, int order, ...

    My-NavigationDrawer-MaterialDesign:这是一个由这个库 https 制作的示例应用程序

    我的导航抽屉材料设计 这是一个示例应用程序,它基于实现了材质抽屉。 然而,我对其进行了改进,使其运行在 API 级别 8 的最低水平上。... 在我替换的 onCreateOptionsMenu 方法上 final MenuItem men

    android菜单的使用

    1、在android Activity中重写onCreateOptionsMenu(),onOptionsItemSeclected() 与onCreateContextMenu()与onContextItemSelected()来实现OptionsMenu 与ContextMenu菜单。 2、子菜单的使用

    Android开发笔记之:复写按钮方法

    在Activity类的子类中直接复写下面三个方法: 代码如下://复写onCreateOptionsMenu()方法,弹出菜单栏 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_...

    简易计算器

    public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }

Global site tag (gtag.js) - Google Analytics