onCreateOptionsMenu
onCreateOptionsMenu
----只在Activity创建时调用一次!之后不会再被调用!
onPrepareOptionsMenu
----每次display menu之前,都會调用该方法,
只要按一次menu按鍵,就會调用一次。
所以你會發現每次只要按一次menu按鍵,
menu選單就會多兩個(因為我們預設是兩個)
你可以利用onPrepareOptionsMenu來做update menu狀態的動作
所以如果在menu创建之后,想对menu进行动态的修改,那么就不能再对onCreateOptionsMenu做修改,要重写onPrepareOptionsMenu(Menumenu)方法。
注意:在使用onPrepareOptionsMenu的时候,如果你每次都调用了menu.add()方法的话,那么菜单中的项目就会越来越多,所以,一般情况下是要调用一下menu.clear()的。
super.onPrepareOptionsMenu(menu);
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);
}
Fragment通过实现onCreateOptionsMenu()方法给Activity的可选菜单(包括动作栏)提供菜单项,但是为了这个方法能够接受调用,必须在onCreate()方法中调用setHasOptionsMenu()方法来指示这个Fragment应该作为可选菜单的添加项(否则,这个Fragment不接受对onCreateOptionsMenu()方法的调用)。
然后,你把来自Fragment的要添加到可选菜单中项目追加到既存的菜单中。当菜单项被选择时,这个Fragment也接受onOptionsItemSelected()的回调。
你也能够通过调用registerForContextMenu()方法在Fragment布局中注册一个视图来提供一个上下文菜单。当用户打开上下文菜单时,Fragment会接受对onCreateContextMenu()方法的调用。当用户选择一个菜单项时,Fragment会接受对onContextItemSelected()方法的调用。
注意:尽管Fragment添加的每个菜单项都接受一个on-item-selected回调,但是当用户选择一个菜单项时,对应的Activity会首先受到相应的回调。如果Activity的on-item-selected回调的实现不处理被选择的项目,那么事件会被传递给Fragment的回调。这是真正的可选菜单和上下文菜单。
关于菜单的更多信息,请看菜单(Menus)和动作栏(Action Bar)开发指南。
onCreateOptionsMenu的更多相关文章
- Android的onCreateOptionsMenu()创建菜单Menu详解(转)
Android一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(s ...
- Android的onCreateOptionsMenu()创建菜单Menu详解
Android一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(s ...
- onCreateOptionsMenu 和 onPrepareOptionsMenu 的区别
onCreateOptionsMenu 第一次创建时调用 onPrepareOptionsMenu 运行时每次点击菜单按钮时都会调用这个函数,可以动态改变菜单项 public boolean onPr ...
- 【转】Android的onCreateOptionsMenu()创建菜单Menu详解
原文网址:http://www.linuxidc.com/Linux/2012-02/55500.htm Android一共有三种形式的菜单: 1.选项菜单(optinosMen ...
- 【转】onPrepareOptionsMenu 和onCreateOptionsMenu 的区别
原文网址:http://blog.csdn.net/allenjy123/article/details/7467084 @Override public boolean onCreateOption ...
- onCreateOptionsMenu与onCreateContextMenu差别
onCreateOptionsMenu只会在启动时调用一次,而onCreateContextMenu则每次都会调用,这是因为onCreateContextMenu需要为所有的View控件的上下文菜单服 ...
- SherlockactionBar中手动调用onCreateOptionsMenu的办法
我们有时候要做做事的时候,要提前拿到 ActionBar中的menuItem,但是,会出现为空的情况.怎么办呢? 比如这里: @Override public boolean onCreateOpti ...
- [转]于Fragment和Activity之间onCreateOptionsMenu的问题
Fragment和Activity一样,可以重写onCreateOptionsMenu方法来设定自己的菜单,其实这两个地方使用onCreateOptionsMenu的目的和效果都是完全一样的,但是由于 ...
- Android的onCreateOptionsMenu()创建菜单Menu
android一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜 ...
- 菜单项onCreateOptionsMenu()和onOptionsItemSelected()的使用
Java源文件 package com.example.macname.myapplication; import android.support.v7.app.AppCompatActivity; ...
随机推荐
- druid数据源的加密解密工具
数据库得加密 先来一个网上大多数的教程吧,一个比较好的教程,如下. jar包版本:druid-1.0.13.jar 1. 加密,用以下命令将用户名和密码加密 cmd命令行执行 java -cp D:/ ...
- JVM插码之三:javaagent介绍及javassist介绍
本文介绍一下,当下比较基础但是使用场景却很多的一种技术,稍微偏底层点,就是字节码插庄技术了...,如果之前大家熟悉了asm,cglib以及javassit等技术,那么下面说的就很简单了...,因为下面 ...
- hdu 1074 状态压缩
http://acm.hdu.edu.cn/showproblem.php?pid=1074 我们可以断定状态的终止态一定是n个数全部选完的情况,那么它的前一个状态是什么呢,一定是剔除任一门课程后的n ...
- hdu 5616 Jam's balance 正反背包+转换
http://acm.hdu.edu.cn/showproblem.php?pid=5616 思路 题目中蕴含着两种需要计算的重量 1. 从所有的砝码中挑出任意种2.(转换的思想)在天平的两端都挑出这 ...
- 杂项:art-template-loader
ylbtech-杂项:art-template-loader 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. https://www.npmjs.com/p ...
- Servlet的生命周期以及简单工作原理的讲解
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destr ...
- lua 函数调用 -- 闭包详解和C调用
转自:http://www.cnblogs.com/ringofthec/archive/2010/11/05/luaClosure.html 这里, 简单的记录一下lua中闭包的知识和C闭包调用 前 ...
- JVM类加载(1)—加载
1.加载: 查找并加载类,将.class文件中的二进制数据读入到内存中,放在运行时数据区的方法内,然后在堆内创建一个java.lang.class对象用来封装类在方法区内的数据结构.并且向程序员提供了 ...
- Arcane Numbers 1
Vance and Shackler like playing games. One day, they are playing a game called "arcane numbers& ...
- 7、RNAseq Downstream Analysis
Created by Dennis C Wylie, last modified on Jun 29, 2015 Machine learning methods (including cluster ...