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

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

MyDiaryActivity中的方法:

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

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

1.onCreateOptionsMenu(Menu menu)

然后执行

2.onPrepareOptionsMenu(Menu menu)

注意点,

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

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

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

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

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

最新文章

  1. UIButton修改文字大小问题
  2. js removeChild 方法
  3. HBase概念学习(十)HBase与MongDB等NoSQL数据库对照
  4. 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
  5. Misha and Changing Handles
  6. 优盘文件系统(FOR C)
  7. Cisco 学会使用Telnet、SSH
  8. Broker节点
  9. Spring+MVC+Mybatis整合
  10. 计蒜客NOIP2017提高组模拟赛(五)day2-成绩统计
  11. 【翻译】如何在Ext JS 6中使用Fashion美化应用程序
  12. 涂色(CQOI2007)
  13. 信用评分卡 (part 2of 7)
  14. Oracle,cast函数
  15. java8 字符串转换 list long Integer
  16. redis 五大数据类型之set篇
  17. JDK8中的时间API
  18. 获取ul下li标签里点击的是哪一个li并获取li里a标签的值
  19. sql如何通过当前日期获取上周,上上周,上上上周的起始日期(周一_周七)
  20. Discuz常见小问题-如何使用QQ登陆

热门文章

  1. php基础知识(有代码有注释)
  2. 【分享】JS生成随机字符串
  3. sed 文件查找,替换
  4. 将MFC Grid control封装为DLL的做法及其在DLL中的使用方法
  5. 【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java
  6. Warning: Unable to send packet: Error with PF_PACKET send() [11]: Message too long (errno = 90)
  7. echarts 应用数个样例
  8. openstack之网络基础
  9. 学习MVC遇到的问题
  10. 抄书(B - 二分查找)