zoukankan      html  css  js  c++  java
  • 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)开发指南。

  • 相关阅读:
    Call指令和Ret指令讲解02 零基础入门学习汇编语言49
    指针01 零基础入门学习C语言41
    Call指令和Ret指令讲解03 零基础入门学习汇编语言50
    Call指令和Ret指令讲解01 零基础入门学习汇编语言48
    指针01 零基础入门学习C语言41
    指针02 零基础入门学习C语言42
    Call指令和Ret指令讲解02 零基础入门学习汇编语言49
    VC++2012编程演练数据结构《31》狄杰斯特拉算法
    VC++2012编程演练数据结构《30》弗洛伊德算法
    在Windows Azure Web Site上为Node.js自动安装NPM包
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/3432929.html
Copyright © 2011-2022 走看看