在做菜单的功能,发现,菜单越来越多,后来仔细看了他们的区别,如下:
但是onCreateOptionsMenu
和onPrepareOptionsMenu
的差別在哪呢?
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);
}
分享到:
相关推荐
1. 代码添加:在`onCreateOptionsMenu`或`onPrepareOptionsMenu`中使用`menu.add()`方法。例如: ```java public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(Menu....
创建选项菜单通常在onCreateOptionsMenu和onPrepareOptionsMenu方法中完成,而上下文菜单则需要先通过registerForContextMenu注册,然后在onCreateContextMenu中定义。菜单项的点击事件通常通过...
开发者可以使用`onCreateOptionsMenu()`和`onPrepareOptionsMenu()`这两个生命周期方法来创建和更新菜单。`onCreateOptionsMenu()`用于首次创建菜单,而`onPrepareOptionsMenu()`则在每次菜单显示前调用,为动态调整...
1. 使用`onCreateOptionsMenu`和`onPrepareOptionsMenu`方法创建和准备选项菜单。 2. XML布局文件`R.menu.main`中定义菜单项。 3. 使用反射技术访问和修改Android内部类的私有方法。 4. `MenuItem`对象的创建和配置...
OnCreateOptionsMenu()和OnOptionsMenuSelected()是Activity中提供的两个回调方法,用于创建菜单项和响应菜单项的点击。onOptionsMenuClosed菜单关闭后发生的动作 onPrepareOptionsMenu选项菜单显示之前...
在Activity中,菜单的生命周期与`onCreateOptionsMenu()`、`onPrepareOptionsMenu()`和`onOptionsItemSelected()`三个方法紧密关联。`onCreateOptionsMenu()`在首次显示菜单时被调用,用于加载和初始化菜单资源。`...
- 它基于 `Menu` 类,可以通过在 `onCreateOptionsMenu()` 和 `onPrepareOptionsMenu()` 方法中填充菜单项。 2. **自定义 OptionMenu** - `MyOptionMenu` 可能是开发者为了实现特定设计或交互而创建的自定义菜单...
在Android应用中,我们通常在`onCreateOptionsMenu()`或`onPrepareOptionsMenu()`方法中定义和配置`MenuItem`。例如: ```java @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater()....
要动态添加菜单项,我们需要在`onPrepareOptionsMenu()`或`onCreateOptionsMenu()`方法中使用`Menu.add()`方法。这个方法接受四个参数:组ID、菜单ID、菜单项的顺序号(用于排序)和标题。 ```java MenuItem ...
- 选项菜单(Menu):在屏幕顶部显示,可以通过onCreateOptionsMenu和onPrepareOptionsMenu创建。 - 子菜单(SubMenu):选项菜单中的嵌套菜单。 - 上下文菜单(ContextMenu):针对特定视图显示,使用...
`Menu`对象可以通过`onCreateOptionsMenu()`或`onPrepareOptionsMenu()`方法在活动中创建。菜单项可以定义在XML布局文件中,然后在活动中通过`inflate()`方法加载。例如,一个简单的菜单XML可能包含`<item>`标签,每...
在Activity的`onCreateOptionsMenu()`方法中,我们通常会使用`MenuInflater`的`inflate()`方法,将XML菜单布局加载到活动的菜单实例中。 3. **菜单的显示** 菜单在界面上的显示通常与`ActionBar`或`Toolbar`关联。...
- 如果在Fragment中使用菜单,需要在Fragment中重写`onCreateOptionsMenu`和`onOptionsItemSelected`,并通知Activity。 通过分析MenuSample项目的源码,开发者可以深入理解Android菜单的生命周期、菜单项的事件...
你可以直接在`onCreateOptionsMenu`方法中创建并添加菜单项,但这种方法相比XML布局文件会更繁琐,因为每个菜单项都需要手动创建和配置。 总的来说,静态菜单通过XML布局文件创建,易于维护和扩展,而动态创建则...
开发者可能在`onCreateOptionsMenu`或`onPrepareOptionsMenu`方法中动态添加菜单项,并在`onOptionsItemSelected`中处理菜单项的点击事件。 最后,为了实现动画效果,开发者可能运用了`Interpolator`(插值器)来...
2. **生命周期**: Menu与Activity的生命周期紧密相关,主要涉及`onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, 和 `onOptionsItemSelected()` 三个方法。 - `onCreateOptionsMenu(Menu menu)`: 在需要显示...
3. **菜单的生命周期**:在Activity中,菜单的生命周期与Activity的onCreateOptionsMenu()、onPrepareOptionsMenu()和onOptionsItemSelected()方法紧密关联。onCreateOptionsMenu()用于初始化菜单,...
在Android应用开发中,Menu菜单通常用于在Activity的顶部或者底部提供操作选项,方便用户进行交互。动态更新Menu菜单是一项重要的功能,它允许我们在运行时根据应用的状态或用户行为来改变菜单项,提供更加灵活的...
【Android应用源码之MenuXmlSample】是一个针对Android平台的毕业设计示例项目,它主要展示了如何在Android应用中使用XML来定义和管理菜单。在Android应用开发中,菜单是提供用户操作的重要部分,通常在选项栏或者上...
在Android中,菜单通常是通过在Activity或Fragment中调用`onCreateOptionsMenu()`方法来创建的。这个方法会返回一个`Menu`对象,开发者可以通过`MenuInflater`填充菜单项。例如: ```java @Override public boolean...