读书人

onCreateOptionsMenu跟onPrepareOptio

发布时间: 2012-09-27 11:11:17 作者: rapoo

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);
}

读书人网 >移动开发

热点推荐