首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

何时以及多久为ActionBar调用onPrepareOptionsMenu()方法?

在Android应用程序中,onPrepareOptionsMenu()方法是在onCreateOptionsMenu()方法之后调用的,用于在显示菜单之前对其进行修改。onPrepareOptionsMenu()方法的调用时机取决于以下几种情况:

  1. 当用户打开或关闭硬件键盘时。
  2. 当用户点击菜单键时。
  3. 当用户对某个菜单项进行操作时。
  4. 当用户对某个菜单项进行长按操作时。
  5. 当用户对某个菜单项进行拖动操作时。

onPrepareOptionsMenu()方法的调用频率可能会因为不同的设备和操作系统版本而有所不同,但通常情况下,它会在用户与应用程序进行交互时被调用。

以下是一个简单的onPrepareOptionsMenu()方法示例:

代码语言:java
复制
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // 在这里修改菜单项的属性,例如启用或禁用某个菜单项
    MenuItem menuItem = menu.findItem(R.id.action_example);
    menuItem.setEnabled(true);

    // 返回true表示菜单已经被修改,需要重新显示
    return true;
}

总之,onPrepareOptionsMenu()方法的调用时机和频率取决于用户与应用程序的交互方式,开发者可以在这个方法中对菜单进行动态修改,以满足不同的用户需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android侧滑菜单之DrawerLayout用法详解

后来谷歌在v4包中添加了DrawerLayout来实现这个功能,完全可以替代SlidingMenu,这里我们来学习DrawerLayout的用法 一)创建DrawerLayout 1)在布局文件里将布局设置DrawerLaout...的内容,因此要调用invalidateOptionsMenu()会重绘actionBar上的菜单项,执行这个方法的时候会回调onPreareOptionsMenu(),所以我们可以在这里通过判断抽屉处于打开还是关闭状态...isDrawerOpen); //如果DrawerLayout是关闭的就显示actionBar里的webSearch return super.onPrepareOptionsMenu(menu);....setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); 2)因为图标也是一个菜单项,所以点击它也是会调用...savedInstanceState) { //将ActionBarDrawerToggle与DrawerLayout同步起来 //将ActionBarDrawerToggle中的Drawer图标设置ActionBar

1.9K10

Android开发笔记(六十五)多样的菜单

顶部导航栏ActionBar》; 下面是选项菜单需要重写的方法: onMenuOpened : 在菜单弹出时调用,一般无需重写 onMenuItemSelected : 在菜单项选择时调用,查看该方法的源码...,会发现该方法内部做分支处理,判断如果是选项菜单则调用onOptionsItemSelected,如果是上下文菜单则调用onContextItemSelected。...onPrepareOptionsMenu : 在准备打开选项菜单时调用,一般无需重写 onOptionsMenuClosed : 在选项菜单关闭时调用,一般无需重写 上下文菜单ContextMenu...,需要重写对不同菜单项做分支处理 onContextMenuClosed : 在上下文菜单关闭时调用,一般无需重写 菜单的点击事件 方便理清两种菜单的相互关系与调用流程,我们对各种菜单点击事件做了测试...解决以上不足,我们可利用弹窗PopupWindow来实现任意位置的菜单展示,以及可定制的菜单样式。

1.3K30

Menu

说明 重写两个方法 public boolean onCreateOptionsMenu(Menu menu):调用OptionMenu,在这里完成菜单初始化,只会在第一次初始化菜单时调用 public...void onOptionsMenuClosed(Menu menu):菜单关闭会调用方法 public boolean onPrepareOptionsMenu(Menu menu):选项菜单显示前会调用方法...的参数menu,调用add方法添加 菜单,add(菜单项的组号,ID,排序号,标题),另外如果排序号是按添加顺序排序的话都填0即可!...MenuItem对象,调用其setIcon()方法相应MenuItem设置Icon 高版本的SDK,即使设置了 Icon,也不会显示的。...操作步骤 Step 1:重写onCreateContextMenu()方法 Step 2:view组件注册上下文菜单,使用 - registerForContextMenu()方法,参数是View Step

1K20

Android开发笔记(二十)顶部导航栏ActionBar

,包括导航项Navigation(下拉列表与标签切换)、搜索框SearchView,以及可自定义的定制视图CustomView。...否则就显示 requestWindowFeature(Window.FEATURE_NO_TITLE); 4、在Activity代码中获得ActionBar实例,调用该实例的hide方法表示关闭ActionBar...;调用show方法表示显示 ActionBar actionBar = getActionBar(); if (actionBar !...所以要想在菜单列表中显示左侧图标,需要调用MenuBuilder的setOptionalIconsVisible方法(MenuBuilder在Android内核中,未开放出来,只能通过反射机制来调用)。...定制视图的布局与普通布局一样,都在layout目录下,从布局文件中获取并修改完成视图后,调用ActionBar的setCustomView方法就完成了定制。

8.5K20

2.下拉刷新、二维码

,以及接口方法 2.定义接口对象 3.在某一个地方.接口对象调用接口方法 4.暴露接口对象(构造方法,setter方法) AsyncTask 基本使用 onPre doInbackGroup onpost...AsyncTask.THREAD_POOL_EXECUTOR, null);//并行 AsyncTask简单封装 实际开发我们会去继承Asynctask AsyncTask函数化的封装,AsyncTask函数式的调用...版本兼容库.我们可以在2.1以下也是用actionbar actionBar = getSupportActionBar();//得到actionbar, actionBar.setDisplayHomeAsUpEnabled...//是否显示返回箭头,默认情况是false, //如果setDisplayShowHomeEnabled setDisplayShowTitleEnabled 都是false,那么退回图标设置true...二维码横竖屏切换 图片横着切 二维码动画 仿微信扫描效果 使用zxing扫描二维码 认识二维码 二维码的范围 二维码容错级别 二维码嵌入logo 使用 先找到按钮,然后调用 //1.启动扫描界面

89670

下拉刷新、二维码

下拉刷新 网络引擎的封装 不通网络请求封装到CloudEngine.class中,以方法的形式暴露; 所有网络请求结果的处理.通过接口方法回调回来; 接口回调 handler机制+thread 怎么理解接口回调...-->接口回调就是一个通知机制 作用:1.单纯的通知 2.通知+传值 步骤: 1.定义接口,以及接口方法 2.定义接口对象 3.在某一个地方.接口对象调用接口方法 4.暴露接口对象(构造方法,setter...每次执行1个任务 1.6-2.3之前的版本.是并行执行的.每次执行5个任务 AsyncTask简单封装 实际开发我们会去继承Asynctask AsyncTask函数化的封装,AsyncTask函数式的调用...//是否显示返回箭头,默认情况是false, //如果setDisplayShowHomeEnabled setDisplayShowTitleEnabled 都是false,那么退回图标设置true...二维码横竖屏切换 图片横着切 二维码动画 仿微信扫描效果 使用zxing扫描二维码 认识二维码 二维码的范围 二维码容错级别 二维码嵌入logo 使用 先找到按钮,然后调用 //1.启动扫描界面

36420

Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)

2.每一个你想添加的Tab创建一个ActionBar.Tab的实例,并且调用setTabListener()方法来设置ActionBar.TabListener。...除此之外,还需要调用setText()方法来给当前Tab设置标题。 3.最后调用ActionBar的addTab()方法将创建好的Tab添加到ActionBar中。...当Tab被选中的时候会调用onTabSelected()方法,在这里我们先判断mFragment是否空,如果空的话就创建Fragment的实例并调用FragmentTransaction的add()...方法,如果不会空的话就调用FragmentTransaction的attach()方法。...首先调用ActionBar的newTab()方法来创建一个Tab实例,接着调用了setText()方法来设置标题,然后再调用setTabListener()方法来设置事件监听器,最后再调用ActionBar

1.5K80

actionbar完全解析(一)

而如果想要移除ActionBar的话通常有两种方式,一是将theme指定成Theme.Holo.NoActionBar,表示使用一个不包含ActionBar的主题,二是在Activity中调用以下方法:...响应Action按钮的点击事件 当用户点击Action按钮的时候,系统会调用Activity的onOptionsItemSelected()方法,通过方法传入的MenuItem参数,我们可以调用它的getItemId...我们可以通过调用setDisplayHomeAsUpEnabled()方法来启用ActionBar图标导航功能,比如: @Override protected void onCreate(Bundle...合并的时候就会调用onMenuItemActionCollapse()方法,我们在这两个方法中进行相应的UI操作就可以了。...,当overflow被展开的时候就会回调这个方法,接着在这个方法的内部通过返回反射的方法将MenuBuilder的setOptionalIconsVisible变量设置true就可以了。

1K100

Android6.0源码分析之menu键弹出popupwindow菜单流程分析

Activity开始看起,整体流程如下: 从按键弹起framework层分发到activity开始,到弹出popupwindow结束整个流程图 代码所在目录如下 流程图中所涉及到的一些只是单纯的作为中介调用了一下...= null && mActionBar.onMenuKeyEvent(event)) { //当menu按键到来时,先判断下actionBar是否null,如果actionbar...通过以上方法的分析可以总结出,一个menu事件在传递给activity后,如果不是menu事件就会直接交给window会向下传递,有三方可能进行处理 actionbar window view...这三个优先级由高到低,也就是说,menu事件会首先传递给actionbar,如果actionbar进行了处理并且将事件拦截下来不派发给窗口,那么menu事件到actionbar处理之后就结束了。...条件进行了以下几个判断,mReserveOverflow判断了是否显示overflow按钮,isOverflowMenuShowing表示了菜单项的popupwindow是否正在显示 //,以及要打开菜单项的进程是否已经初始化

1.6K60

Android系列之ActionBar使用详解

版本(默认含有ActionBar) 二、隐藏ActionBar 1、我们可以通过把主题设置Theme.Holo.NoActionBar一个Activity去除掉ActionBar。 ...1 2、我们也可以通过在代码中调用show()或者hide()方法来相应的显示或者隐藏...ActionBar 3、在我们使用actionBar.hide();方法是系统默认会将ActionBar占用的空间分配给界面,此时显示的界面将会重新绘制。...2、当用户选择一个Fragment的菜单项时,首先会调用Activity的onOptionsItemSelected()方法,如果该方法返回false,则调用Fragment实现的onOptionsItemSelected...的左侧 2、当用户点击应用bar的时候,系统会调用你的Activity里面的onOptionsItemSelected() 方法里面的Android.R.id.Home ID(你的主ID)里定义的事件

3.4K20

Android4.42-Settings源码分析之蓝牙模块Bluetooth(上)

,这个属性有几个问题需要好好说一下:第一,若不设置该属性,则切屏时会重新调用各个生命周期,切横屏调用一次,切竖屏则需要调用两次。...圈2:ActionBar底部栏,可进行蓝牙设备的搜索,检测时间,已配对设备列表等一些除了配对之外的设置,Actionbar的相关布局在onCreateOptionsMenu方法中,利用如下代码可自定义actionbar...2>,addPreferencesForActivity()方法,用于添加actionbar上的switch,代码见蓝牙布局部分 3>,onCreateView()方法,fragment的生命周期方法,...这就涉及到了,注册广播监听本地蓝牙状态,switch注册监听器监听switch的更改,以及对switch状态进行设置的方法。...,该线程中再次调用该更新summary的方法,在更新summary中的方法中会对时间进行判断,如果时间结束了,就退出该方法

1.5K20

Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

而如果想要移除ActionBar的话通常有两种方式,一是将theme指定成Theme.Holo.NoActionBar,表示使用一个不包含ActionBar的主题,二是在Activity中调用以下方法:...响应Action按钮的点击事件 当用户点击Action按钮的时候,系统会调用Activity的onOptionsItemSelected()方法,通过方法传入的MenuItem参数,我们可以调用它的getItemId...我们可以通过调用setDisplayHomeAsUpEnabled()方法来启用ActionBar图标导航功能,比如: @Override protected void onCreate(Bundle...合并的时候就会调用onMenuItemActionCollapse()方法,我们在这两个方法中进行相应的UI操作就可以了。...,当overflow被展开的时候就会回调这个方法,接着在这个方法的内部通过返回反射的方法将MenuBuilder的setOptionalIconsVisible变量设置true就可以了。

3.2K101

Material Design 实战 之第二弹——滑动菜单详解&实战

调用ActionBar的setDisplayHomeAsUpEnabled()方法让导航按钮显示出来; 1.2.4 调用了setHomeAsUpIndicator()方法来设置一个导航按钮图标...这里我们并没有改动多少代码, 首先调用findViewById()方法得到了DrawerLayout的实例, 然后调用getSupportActionBar()方法得到了ActionBar的实例,虽然这个...接着调用ActionBar的setDisplayHomeAsUpEnabled()方法让导航按钮显示出来, 又调用了setHomeAsUpIndicator()方法来设置一个导航按钮图标。...代码还是比较简单的, 这里首先获取到了NavigauonView的实例, 然后调用它的setCheckedItem()方法将Call菜单项设置默认选中。...我们可以在这个方法中写相应的逻辑处理,不过这里并没有附加任何逻辑,只是调用了DrawerLayout的closeDrawers()方法将滑动菜单关闭,这也是合情合理的做法。

93830
领券