当前位置: 首页 > news >正文

常州专业做网站/国际新闻头条今日国际大事

常州专业做网站,国际新闻头条今日国际大事,安踏网络营销推广案例,网站建设体会最近在开发过程中,遇到了一个再显示不同的Fragment时给予其不同的menu显示,由于这几个Fragment属于同一个Activity而menu是对Activity设置的对于Fragment并没有设置menu的方法,再查了很多资料之后终于解决了这个问题。 开发的背景: MainAct…

最近在开发过程中,遇到了一个再显示不同的Fragment时给予其不同的menu显示,由于这几个Fragment属于同一个Activity而menu是对Activity设置的对于Fragment并没有设置menu的方法,再查了很多资料之后终于解决了这个问题。

开发的背景:

MainActivity使用一个viewPager,给这个viewPager设置一个FragmentPagerAdapter而给其设置了多个Fragment。现在的需求是在ViewPager切换不同的Fragment时显示不同的Menu,而设置Menu的方法onCreateOptionsMenu与onPrepareOptionsMenu以及onOptionsItemSelected仅在MainActivity中存在。

在解释解决方法之前,向简单回顾Android中的Menu简单用法:
1) menu的创建:
通过资源文件res/menu目录设置<item>来完成设置,在方法onCreateOptionsMenu(Menu menu)中加载此布局:

@Override  public boolean onCreateOptionsMenu(Menu menu) {  // Inflate the menu; this adds items to the action bar if it is present.  getMenuInflater().inflate(R.menu.activity_main, menu);  return true;  }  

通过代码创建:

public boolean onCreateOptionsMenu(Menu menu) {  
//第三个参数表示此menu的id值,在onOptionsItemSelected方法中通过id值判断是哪个menu被点击了menu.add(Menu.NONE, 1, 1, "菜单1");  menu.add(Menu.NONE, 2, Menu.NONE, "菜单2");  return true;  
}  

2)menu的创建过程:

menu的创建过程包括三个方法:
onCreateOptionsMenu与onPrepareOptionsMenu以及onOptionsItemSelected
其中:

onCreateOptionsMenu:

只会调用一次,他只会在Menu显示之前去调用一次,之后就不会在去调用。

onPrepareOptionsMenu:

onPrepareOptionsMenu是每次在display Menu之前,都会去调用,只要按一次Menu按鍵,就会调用一次。所以可以在这里动态的改变menu。一般使用这个函数时先执行menu.clear().否则如果在这里执行add()的话会不停的追加。

3)menu的点击处理:

onOptionsItemSelected :

响应menu的点击操作,它的参数MenuItem item可以通过getItemId方法获取是哪个menu被点击了从而响应不同的操作。

现在看上面问题的解决方法:
在MainActivity中设置一个全局变量来保持当前是那一个fragment,当然默认值为0表示第一个。在创建onCreateOptionsMenu方法中:

   @Overridepublic boolean onCreateOptionsMenu(Menu menu) {//判断当前处于哪个fragmentswitch (viewPagerSelected) {case 0://第一个fragment的menumenu.add(0, ID_EDIT, 0, "编辑");menu.add(0, ID_CANCEL_EDIT, 0, "取消编辑");break;case 1://第二个fragment的menu(无)break;case 2://第三个fragment的menumenu.add(0, ID_CREATE_GROUP, 0, "创建群组");break;}return true;}

然后给viewpager设置一个滑动监听:

 viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {@Overridepublic void onPageSelected(int position) {//更新当前是哪个fragmentviewPagerSelected = position;//刷新显示的menurefreshMenu();}});//刷新Menuprivate  void  refreshMenu(){//核心是Activity这个方法supportInvalidateOptionsMenu();}

按如上的操作就完成了同一Activity中不同Fragment设置不同的menu的需求。

http://www.lbrq.cn/news/1759717.html

相关文章:

  • 创建网站时可使用的数据库有/销售管理
  • 福州做企业网站的公司/百度推广有哪些形式
  • 网站策划书的意义/推广方案怎么做
  • 好多职业培训网站是怎么做的/廊坊网站推广公司
  • java主要就是做网站吗/免费网站生成器
  • 网站建设制作软件/网络seo是什么工作
  • 有没有电脑做兼职的网站/百度下载安装官方下载
  • 来年做哪些网站致富/国内搜索引擎优化的公司
  • 网站设计器/关键路径
  • 网站功能分析/企业文化
  • qq怎么做自己的网站/营销
  • 做新网站的swot分析/百度seo网站在线诊断
  • 网站建设应考虑哪些方面的问题/百度官网电话
  • 深圳网站建设网页设计/百度人工电话多少号
  • 做公益选哪个网站好/北京网站seo优化推广
  • wap手机网站建设/谁有恶意点击软件
  • 电子商务公司是诈骗吗/天津seo实战培训
  • 烟台H5网站设计公司/怎么免费创建自己的网站
  • 查找全国免费网站建设/成都网站制作设计公司
  • 虾想网络定制/超级优化空间
  • 企业网站建设的思路/磁力狗
  • 淘宝做基础销量网站/十大微商推广平台
  • 福州cms模板建站/设计公司取名字大全集
  • 京东 推广网站怎么做/百度网络营销app
  • 化妆品网站建设实训总结/网络营销的内容主要有哪些
  • 百度做公司网站有用吗/优化加速
  • wordpress博客批量发布/产品seo标题是什么
  • 网站建设制作怎么弄/青岛网站建设制作推广
  • 注册公司流程图片/嘉兴seo外包平台
  • 做网站没赚到钱/个人如何在百度做广告
  • 【Linux】基本指令详解(二) 输入\输出重定向、一切皆文件、认识管道、man、cp、mv、echo、cat
  • Golang学习之常见开发陷阱完全手册
  • 深入解析Linux进程地址空间与虚拟内存管理
  • redisson tryLock
  • 渭河SQL题库-- 来自渭河数据分析
  • Ai问答之空间站星等