onMenuOpened不调用问题
来源:互联网 发布:淘宝无线链接 编辑:程序博客网 时间:2024/05/19 14:19
在代码中,我不使用系统的菜单,而是按照自己定义的。但是,三星上好好的,放到华为上又出问题。这让我想起刚搞android时弄视音频,自己测试好好的,在HTC机和小米上老是各种bug。
唉,还是回过头来瞧瞧现在啥问题。发现,原来onMenuOpened在华为上木有被调用,这是嘛回事啊?
上网!(发现自从转做android,上网频率明显飙升)。度娘告诉我(敏感时期,谷歌最近一直上不去),很多小伙伴也遇见这个问题,但是好像么有人给出解决办法,大家吐槽onMenuOpened太不好用了。
网上还是有牛人,其他地方给了这个方案:
在按键监听中监听 KeyEvent.KEYCODE_MENU 事件,然后自己进行处理。
嗯,这的确是个办法。但我觉得既然有手机能用,二者也差不到(一三星G3509,4.1版本,另华为P6,4.2版本),那么应该有更优美的办法,实在不行,再回头用这个办法。
自己一股脑重写了 onMenuOpened、closeOptionsMenu、onOptionsMenuClosed、onOptionsItemSelected、openOptionsMenu、onCreateOptionsMenu,进行log打印调试。当然openOptionsMenu、closeOptionsMenu始终没被调用,这是自己主动调用时会使用的。
正文:
1,既然要显示自己menu ,那 onMenuOpened 中要
return false;返回为true 则显示系统menu。
三星流程是下面这样的
//【流程1】 ① 头次按下menu键,执行onCreateOptionsMenu() --> onMenuOpened();② 后面再按menu,执行onMenuOpened()
华为P6流程是下面这样的
//【流程2】① 头次按下menu键,执行onCreateOptionsMenu();② 后面再按menu,均无反应
2,改为返回true 以显示系统menu试试,二者和上面各自的流程一样;
3,既然如此,在 onCreateOptionsMenu 中增加
menu.add("menu");原来因为不用系统菜单,所以就没往里增加菜单项。ps:onCreateOptionsMenu 则要返回true,否则意味菜单失败,每次按menu键,就只执行onCreateOptionsMenu。
三星流程是下面这样的
//【流程3】 ① 头次按下menu键,执行onCreateOptionsMenu() --> onMenuOpened(),界面显示menu菜单;② 再按menu键,执行onOptionsMenuClosed(),关闭菜单;③ 再按menu键,执行onMenuOpened(),界面显示menu菜单;④ 按menu菜单项,执行onOptionsItemSelected,按键操作,这里什么也没做,然后onOptionsMenuClosed(),关闭菜单
华为流程与三星流程一样。
4,现在再回过头,将onMenuOpened 返回值改回false;
华为、三星流程都与【流程1】一样
总结:
根据上面推测,三星每次按键都执行了onMenuOpened, 华为会判断菜单是否内容为空,只有在menu有选项时才执行。
华为估计认为,既然创建菜单时菜单都是空的,那还打开、显示个P啊!干脆别执行后面的了,浪费资源。
嗯,貌似挺有道理的,但是忽略了想个别情况下(像我这种),使用自定义的东东。作为开发者,我们(至少我是)也想当然的认为,既然我都不用你的菜单,我还往你那添加毛个菜单项,更别说去要显示它了。
当然,以上仅为我个人猜测。
最后,俺还是在onCreateOptionsMenu添加了选项(虽然没用到过)。
- onMenuOpened不调用问题
- onRestart不调用问题
- onActivityResult 不调用的问题
- php 调用 sudo 不执行问题
- webSphere 6.1 与 ajax 不调用问题
- locationManager 回调方法不调用问题?
- 解决didRegisterForRemoteNotificationsWithDeviceToken不调用的问题
- tableview cellForRowAtIndexPath reloadData不调用问题
- 视频拼接exportAsynchronouslyWithCompletionHandler block不调用问题
- Adapter的getView不调用的问题
- 不调用mysql_close()出现的问题
- onConfigurationChanged 未调用不执行的问题
- 关于CFormView不调用OnInitialUpdate的问题
- ioctl调用不执行问题的解决
- bindService不调用onServiceConnected的问题
- Fragment中onActivityResult不调用的问题
- 关于不同类之间句柄调用问题
- 使用AJAX调用数据库不刷新更新页面问题
- 注册_手机号码验证
- Trie字典树算法
- 关于WIN32 窗口信息的各种获取
- TortoiseSVN使用简介
- (转)百度2014移动研发笔试题目——1013清华版
- onMenuOpened不调用问题
- oracle中imp导入数据中文乱码问题
- UVA 11107 Life Forms 后缀数组
- 从入门到精通我是这样学习算法的
- Spring 多数据源事务配置问题
- Solr从Mongodb索引数据(上
- @ResponseBody配置返回
- 用synchronized、notify、wait实现一个火车票卖票程序
- vi下复制粘贴操作