关于ImmersionBar的immersionInit回调问题
来源:互联网 发布:希腊语词根知乎 编辑:程序博客网 时间:2024/06/07 13:58
使用这个框架的时候,如果要使每一个Fragment都能控制statusbar的颜色等,官方推荐的做法是 BaseFragment extends ImmersionFragment
基类中只考虑了setUserVisibleHint的回调,这个回调只用在viewpager切换fragment时才会回调
然后会重写一个immersionInit方法,在里面去做状态栏颜色的改变等.
但是这个方法的回调,只有在使用viewpager加载fragment的时候,才会在切换时回调,达到改变的目的.
如果是通过add show hide 方法切换fragment的话,这个方法是不会回调的! 意味着,一旦切换fragment,再切换回来时,状态栏不会变成原来的样子!
这是为什么呢!!!!
通过查看ImmersionFragment的源码
@Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if ((isVisibleToUser && isResumed())) { onResume(); } } @Override public void onResume() { super.onResume(); if (getUserVisibleHint() && immersionEnabled()) { immersionInit(); } }
基类中只考虑了setUserVisibleHint的回调,这个回调只用在viewpager切换fragment时才会回调
而没有考虑onHiddenChanged,onHiddenChanged在使用hide时被激发,后面show/hide时会回调
上面的代码也很清晰的表现出为何使用add hide show方法切换时,只回调一次immersionInit方法
因为第一次add时,才会走onResume方法,以后的show和hide 都不会走onResume了更不会走setUserVisibleHint,因此immersionInit只回调一次!
而使用viewpager切换fragment时,onResume每次都会调用,因此,当调用onResume并此fragment可见时,就会去调用immersionInit!
解决方法
如何解决add hide show 只调用一次immersionInit的问题呢?
在BaseFragment中重写onHiddenChanged,让其在可见时调用immersionInit就可以了
@Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (!hidden) { immersionInit(); } }
阅读全文
0 0
- 关于ImmersionBar的immersionInit回调问题
- Activity中嵌套ScorllView布局使用ImmersionBar出现的问题
- 一个关于回调的问题
- 关于回调注销问题的总结
- 关于问题的问题
- 关于线程的下载及接口回调的问题
- 关于线程的下载及接口回调的问题
- 关于onActivityResult回调问题
- 关于网银在线接口回调乱码的问题
- 关于block的回调使用-防止内存泄露问题
- 关于fragment 中onActivityResult()回调的问题
- Android开发教程--关于onActivityResult没有回调的问题
- 关于集成友盟分享的回调问题
- 关于微信SDK无法接收回调的问题
- 关于Java或者Android中的回调的问题
- 关于Fragment中的onActivityResult的回调问题
- 5.4 关于问题的问题
- 关于hbase的一些调优问题
- 第三章 Hello World App 浅述(一)
- css样式表中的样式覆盖顺序
- Java内存管理
- 离散数学知识点
- (1-3)Unity3D/2D:Unity中使用Sprite-sheets
- 关于ImmersionBar的immersionInit回调问题
- C#基础巩固——重写(override)修饰与覆盖(new)修饰的区别
- Java之assert关键字
- (OK) 第五章 传输层(tcp)到网络层(ip)--基于Linux3.10
- 数据压缩原理实验5_实验报告
- 动态库加载
- apache 目录权限配置文件
- 浅析C语言结构体及位段
- 线程进程初识