zoukankan      html  css  js  c++  java
  • Activity中Menu相关的几个方法的调用时机

      用于创建菜单的常用的方法有如下两种:

    1.onCreateOptionsMenu(Menu menu)
    2.onPrepareOptionsMenu(Menu menu)

    MyDiaryActivity中的方法:

     1 /**
     2      * Initialize the contents of the Activity's standard options menu.
     3      * You should place your menu items in to menu. 
     4      */
     5     public boolean onCreateOptionsMenu(Menu menu) {
     6         super.onCreateOptionsMenu(menu);
     7         //经代码测试:只有按手机上的菜单键的时候才执行onCreateOptionsMenu()
     8         System.out.println("===onCreateOptionsMenu()方法====");
     9         menu.add(0, MENU_ITEM_INSERT, 0, R.string.menu_insert);
    10         menu.add(0, android.view.Menu.NONE, 1, R.string.menu_insert_2);
    11         return true;
    12     }
     1 /**
     2      * This is called right before the menu is shown, every time it is shown
     3      */
     4     public boolean onPrepareOptionsMenu(Menu menu) {
     5 
     6         super.onPrepareOptionsMenu(menu);
     7         //在onCreateOptionsMenu(Menu menu)方法之后执行,
     8         System.out.println("public boolean onPrepareOptionsMenu(Menu menu)");
     9         myToast("public boolean onPrepareOptionsMenu(Menu menu) ");
    10         /*
    11          * getListAdapter():Get the ListAdapter associated with this activity's
    12          * ListView. getCount():How many items are in the data set represented
    13          * by this Adapter.
    14          */
    15 
    16         final boolean haveItems = getListAdapter().getCount() > 0;
    17         myToast("getListAdapter().getCount()一共有" + getListAdapter().getCount()
    18                 + "个");
    19         if (haveItems) {
    20             // getListView():Get the activity's list view widget.
    21             if (getListView().getSelectedItemId() > 0) {
    22                 menu.removeGroup(1);
    23 
    24                 Uri uri = ContentUris.withAppendedId(getIntent().getData(),
    25                         getListView().getSelectedItemId());
    26 
    27                 Intent intent = new Intent(null, uri);
    28                 // TODO 下面这行代码还不知道到底怎么用
    29                 menu.add(1, MENU_ITEM_EDIT, 1, "编辑内容").setIntent(intent);
    30                 menu.add(1, MENU_ITEM_DELETE, 1, "删除当前日记");
    31 
    32             }
    33         } else {
    34             menu.removeGroup(1);
    35         }
    36 
    37         return true;
    38     }

    以上这两个方法都是在用户点击了菜单按钮之后才执行,先执行:

     1.onCreateOptionsMenu(Menu menu) 

    然后执行

     2.onPrepareOptionsMenu(Menu menu)

    注意点,

    这两个方法在整个应用的生命周期里的执行次数一般是不同的,具体区别如下:

    onCreateOptionsMenu(Menu menu) 只执行一次,就是安卓应用打开后,用户第一次按菜单键的时候执行这个方法,只要这个Activity不销毁,即只要还没有执行到

    onDestroy()方法,那么onCreateOptionsMenu(Menu menu) 就不会再执行了。

    而相对的,只要用户点击了菜单键,那么onPrepareOptionsMenu(Menu menu)这个方法就会执行一次点一次就执行一次

    这是这两者的很重要的区别。

  • 相关阅读:
    Jmeter分布测试
    SQL命令
    Linux执行命令时遇到的些问题
    Linux常用命令总结
    Jenkins与SVN持续集成
    在linux上创建slave节点
    内网域名配置方法
    Java中重写与重载的区别
    MongoDB基本使用
    MongoDB安装
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4799059.html
Copyright © 2011-2022 走看看