android Fragment中使用Toolbar
在Activity中可以直接使用
setSupportActionBar(toolbar);
就可以重写 onCreateOptionsMenu 和 onOptionsItemSelected 方法;
但是在Fragment中则需要
((AppCompatActivity)getActivity()).setSupportActionBar(mToolbar);
Fragment中需要将 getActivity()转为AppCompatActivity才能获取setSupportActionBar方法;
还有在Fragment中还需要添加一行
setHasOptionsMenu(true);
才能调用 onCreateOptionsMenu 和 onOptionsItemSelected 方法;
如果在 onCreateOptionsMenu 方法中存在判断比如当改变某个状态时某些菜单item不显示等,可以使用如下再重新调用 onCreateOptionsMenu 方法
getActivity().invalidateOptionsMenu();
例:
@Override
protected void initListener() {
((AppCompatActivity)getActivity()).setSupportActionBar(mToolbar);
setHasOptionsMenu(true);
} @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_edit_select,menu);
if(showEditSelect){
menu.findItem(R.id.menu_edit).setVisible(true);
menu.findItem(R.id.menu_cancel).setVisible(false);
}else{
menu.findItem(R.id.menu_edit).setVisible(false);
menu.findItem(R.id.menu_cancel).setVisible(true);
}
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
//当点击一个条目时,不显示另外一个
case R.id.menu_edit:
showEditSelect = false;
getActivity().invalidateOptionsMenu();
break;
case R.id.menu_cancel:
showEditSelect = true;
getActivity().invalidateOptionsMenu();
break;
}
return true;
}
menu_edit_select.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_edit"
android:title="编辑"
android:orderInCategory="100"
app:showAsAction="ifRoom|withText"/>
<item
android:id="@+id/menu_cancel"
android:title="取消"
android:orderInCategory="101"
android:visible="false"
app:showAsAction="ifRoom|withText"/>
</menu>
实现在标题栏菜单处点击“编辑”就会在原来位置上显示“取消”,点击“取消”显示“编辑”。
android Fragment中使用Toolbar的更多相关文章
- Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法. 并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为 ...
- Android Toolbar使用及Fragment中的Toolbar处理
Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法.并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为A ...
- 【转】Android Fragment中使用SurfaceView切换时闪一下黑屏的解决办法
重构了下之前自己的一个新闻客户端,全部使用了Fragment来进行页面切换,只有一个入口Activity作为程序的启动Activity,其中有一个界面需要调用摄像头识别二维码, 于是就会用到Surfa ...
- Android Fragment中使用Intent组件拍照
要在activity里面去接受,然后传递给fragment对象,fragment有很多回调调用不到 你的设备有摄像头吗? 为了确保市场上的大多数设备都能运行你的程序,必须在项目中做一些检测,保证使用的 ...
- 关于在Fragment中设置toolbar及菜单的方法
在NoActionBar的主题中onCreateOptionsMenu方法不会运行,这里就需要将toolbar强制转换为ActionBar 在加入toolbar的监听之类后需要在onCreateVie ...
- Android Fragment中调用getActivity为null的问题
在使用fragment的时候经常会遇到getActivity()为null的情况.比如我在一个异步网路请求的回调中调用了getActivity()就会出现空指针问题.之前解决这个问题,通常都是直 ...
- Android --Fragment中异步HTTP请求
1.自定义异步Task /** * 异步获取实时数据 */ public class TimerDataTask extends AsyncTask<Void, Void, Boolean> ...
- Android——Fragment+Editext总结
原文地址: android Fragment中没有onTouchEvent解决方法 Android--点击EditText的时候弹出软键盘,点击EditText之外空白处软键盘消失,android-- ...
- android开发中fragment获取context
在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationCont ...
随机推荐
- DX11 Without DirectX SDK--05 键盘和鼠标输入
回到 DirectX11--使用Windows SDK来进行开发 提供键鼠输入可以说是一个游戏的必备要素.在这里,我们不使用DirectInput,因为Windws SDK本身就不提供该头文件.这里我 ...
- @component @bean区别
from: http://stackoverflow.com/questions/10604298/spring-component-versus-bean http://stackoverflow. ...
- 第九章——运行tensorflow(Up and Running with TensorFlow)
本章简单介绍了TensorFlow的安装以及使用.一些细节需要在后续的应用中慢慢把握. TensorFlow并不仅仅局限于神经网络和机器学习,它甚至可以用于量子物理仿真. TensorFlow的优势: ...
- 在腾讯云(windows)上搭建node.js服务器
1:安装Node.js 使用MSI文件,并按照提示安装node.js,默认情况下,安装程序将 Node.js 发行到 C:\Program Files\nodejs. 但这里我们需要修改安装路径到:D ...
- 如何最简便的利用Python实现数据可视化?当然离不开matplotlib!
01|Figure和Subplot: matplotlib的图像全部在figure对象里面,就像是一片画布.figsize是figure的一个设置大小的属性.一个figure里面可以有无数个subpl ...
- selenium测试(Java)-- 显式等待(九)
转自:https://www.cnblogs.com/moonpool/p/5668571.html 显式等待可以使用selenium预置的判断方法,也可以使用自定义的方法. package com. ...
- TestNG监听器实现用例运行失败自动截图、重运行功能
注: 以下内容引自 http://blog.csdn.net/sunnyyou2011/article/details/45894089 (此非原出处,亦为转载,但博主未注明原出处) 使用Testng ...
- netty源码分析之揭开reactor线程的面纱(一)
netty最核心的就是reactor线程,对应项目中使用广泛的NioEventLoop,那么NioEventLoop里面到底在干些什么事?netty是如何保证事件循环的高效轮询和任务的及时执行?又是如 ...
- BZOJ_4439_[Swerc2015]Landscaping_最小割
BZOJ_4439_[Swerc2015]Landscaping_最小割 Description FJ有一块N*M的矩形田地,有两种地形高地(用‘#’表示)和低地(用‘.’表示) FJ需要对每一行田地 ...
- golang 中 string 转换 []byte 的一道笔试题
背景 去面试的时候遇到一道和 string 相关的题目,记录一下用到的知识点.题目如下: s:="123" ps:=&s b:=[]byte(s) pb:=&b s ...