Fragment内改变ActionBar的内容

cixingzhici 2014-09-03 05:38:40
加精
通过AcitonBar和FragmentPagerAdapter实现了三个Fragment滑动跳转(类似微信),接下来我想实现每个Fragment里面有不同的Menu菜单,并且改变那三个点的样式。能做吗?该怎么做?还是我一开始就不应该用Fragment。

PS:最终的效果是:
第一个Fragment点击AcitonBar上面的点点点出现个人信息的菜单;
第二个Fragment点击分享按钮(用分享的按钮替换点点点)实现分享到各种社交里面;
第三个Fragment点击+按钮,实现其他功能;


...全文
10904 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
hailong_chen 2016-06-02
  • 打赏
  • 举报
回复
引用 22 楼 lh0304123457 的回复:
按二楼的说法是会将菜单添加进去,不是替换,但是能add就能remove啊,不能remove还能clear啊 所以先clear一下menu在加载就好了 fragment内的代码: 在onCreateView中 getActivity().setTitle("个人主页");//改变标题 setHasOptionsMenu(true);//保证能调用onCreateOptionsMenu onCreateOptionsMenu方法: @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear();//不清空就会变成添加进来而不是替换 inflater.inflate(R.menu.persenol, menu); }
menu.findItem(R.id.action_search).setVisible(true); //menu.clear(); //inflater.inflate(R.menu.main, menu); setHasOptionsMenu(true); super.onCreateOptionsMenu(menu, inflater);
浪迹黑杰克 2015-10-30
  • 打赏
  • 举报
回复
不是二楼是4楼。。。
浪迹黑杰克 2015-10-30
  • 打赏
  • 举报
回复
按二楼的说法是会将菜单添加进去,不是替换,但是能add就能remove啊,不能remove还能clear啊 所以先clear一下menu在加载就好了 fragment内的代码: 在onCreateView中 getActivity().setTitle("个人主页");//改变标题 setHasOptionsMenu(true);//保证能调用onCreateOptionsMenu onCreateOptionsMenu方法: @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear();//不清空就会变成添加进来而不是替换 inflater.inflate(R.menu.persenol, menu); }
夏雨蝶槃墨心 2015-10-10
  • 打赏
  • 举报
回复
这个需求 你实现了吗?
女不 2015-04-30
  • 打赏
  • 举报
回复
楼主,还在么? 那个合并的问题你是怎么解决的啊?
EvanZhang0110 2015-03-30
  • 打赏
  • 举报
回复
引用 6 楼 cz2272006 的回复:
请问楼主解决这个问题了吗?怎么解决的,我也遇到了这个问题~求解
请问你最后实现了没有
EvanZhang0110 2015-03-30
  • 打赏
  • 举报
回复
不知道楼主最后怎么实现的
line_us 2015-03-14
  • 打赏
  • 举报
回复
好法子还不少。
Faith_full 2014-11-10
  • 打赏
  • 举报
回复
加我博客,噶告诉你具体的使用方法。
xbaiwgiz 2014-11-10
  • 打赏
  • 举报
回复
引用 2 楼 DrSmart 的回复:
方法有的,不过看楼主想法蛮多,最简单的还是你自己模拟actionbar吧,省事好控制
怎么到处都有你啊。。。你一天24小时都在看csdn吗?
benben002 2014-11-06
  • 打赏
  • 举报
回复
引用 13 楼 benben002 的回复:
好像可以在每个fragment里添加自己menu, public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 然后在去实现public boolean onOptionsItemSelected(MenuItem item) 不过我的手机4.2.1成功现实,模拟器4.1.2不显示,不知道是不是版本问题
我的模拟器也好用了,是自己搞错了,模拟器用的tablet,tablet单独写了个menu.xml,里面什么也没写,结果不显示。
benben002 2014-11-06
  • 打赏
  • 举报
回复
好像可以在每个fragment里添加自己menu, public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 然后在去实现public boolean onOptionsItemSelected(MenuItem item) 不过我的手机4.2.1成功现实,模拟器4.1.2不显示,不知道是不是版本问题
f1ffffffasd 2014-11-04
  • 打赏
  • 举报
回复
private void getOverflowMenu() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if(menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } } actionBar 如果需要三点的按钮 记得在oncreate方法中调用这个
baidu_22804955 2014-11-01
  • 打赏
  • 举报
回复
看了帖子,蛮受用的,谢谢!
YUYU9624645 2014-11-01
  • 打赏
  • 举报
回复
workforme1 2014-10-31
  • 打赏
  • 举报
回复
引用 4 楼 Hcwfc 的回复:
有几步: 1、如果你想在每一个Fragment都显示的菜单(全局)你可以在包含Fragment的Activity中实现public boolean onCreateOptionsMenu(Menu menu),这个是可以在menu里配置的菜单信息的。 2、如果你只想在某一个Fragment你想让菜单表现出不同你可以在这个Fragment中实现public boolean onCreateOptionsMenu(Menu menu),同样的可以在menu里配置,并且需要设置setHasOptionsMenu(true);如果不设置Fragment中的onCreateOptionMenu不会被回调。
试了下第二个方法,fragment中的menu不会取代activity中的menu,而是把activity的menu和fragment的menu合并了。
SouthMa 2014-10-31
  • 打赏
  • 举报
回复
要不然每个fragment模拟actionbar,要么监听onPageScroll,换页时加载不同的Menu布局,我只能想到这两个通用办法
哎呦我的天 2014-10-31
  • 打赏
  • 举报
回复
不知道你用过知乎的app没,其中消息通知的布局和你说的基本一样,你可以试下不用activity,完全使用fragment,每个fragment设置一个menu,我没试过还不知道可行不可行,只是一点想法
kaiscript 2014-10-28
  • 打赏
  • 举报
回复
请问楼主解决这个问题了吗?怎么解决的,我也遇到了这个问题~求解
哎,真难 2014-09-30
  • 打赏
  • 举报
回复
仔细一看好多需求,哎,便宜卖你想要的demo
加载更多回复(4)

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧