ViewPager嵌套Fragment生命周期变换问题
来源:互联网 发布:linuxshell脚本编程 编辑:程序博客网 时间:2024/06/04 19:09
最近在做项目的时候 用到了ViewPager嵌套Fragment的模型,因为涉及到某些监听变化的变化在Fragment生命周期的变换改变时候出了一些小问题,下面是当时遇到问题的一些总结。
因为嵌套fragment只有三个界面而且 其中有一个界面涉及数据查询,考虑到在初始化的时间稍长,而三个界面占用内存较少所以用FragmentPagerAdapter在切换ViewPager时候不销毁,前期在没有把Fragment嵌套在ViewPager中使用fragment中的onHiddenChanged()判断isHidden可以达到相同的效果的效果,放在ViewPager中换用了Fragment的setUserVisibleHint()方法代码片段如下
@Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { mAdapter.notifyDataSetChanged(); DownloadMgr.getInstance().setCallBack(downCallBack); } else { DownloadMgr.getInstance().clearCallBack(downCallBack); } }
以上是在ViewPager切换的时候可以改变监听状态为设置为当前页
但是在切出应用返回的时候setUserVisibleHint()方法不会调用 所以要同时在onResume()里判断 因为在ViewPager中所以所有的Fragment的onResume()方法都会调用,需要在Activity中记录当前显示为哪一个Fragment代码片段如下
@Override public void onResume() { super.onResume(); int currentFra = mCallback.getCurrentFragment(); if (currentFra == DeskIconMainActivity.DOWN) { mAdapter.notifyDataSetChanged(); DownloadMgr.getInstance().setCallBack(downCallBack); } }
其中mCallback为在activity中设置的监听用来与fragment交互。
综上所述就可以实现判断哪个Fragment为当前显示,并完成相应操作。
0 0
- ViewPager嵌套Fragment生命周期变换问题
- ViewPager嵌套Fragment时Fragment的生命周期问题
- Viewpager+Fragment嵌套Viewpager+Fragment空白页问题
- Viewpager 嵌套fragment的问题
- viewpager 中fragment 生命周期问题
- Viewpager 关联Fragment 生命周期问题
- viewpager的fragment嵌套viewpager的问题
- Fragment嵌套Fragment+ViewPager空白问题
- 关于viewpager+fragment中嵌套viewpager+fragment的问题处理:
- viewPager+fragment嵌套viewPager+fragment
- ViewPager+Fragment嵌套ViewPager+Fragment
- Fragment嵌套问题Fragment一个ViewPager展示子Fragment
- Android FragmentTabHost嵌套(ViewPager+Fragment)问题
- 在ViewPager中使用Fragment嵌套问题
- 关于fragment中嵌套viewpager的问题
- ViewPager的Fragment嵌套使用,getSupportFragmentManager问题
- ViewPager中嵌套Fragment不显示问题
- viewPager+Fragment的多重嵌套问题
- 北航12年机试--统计关键字的C语言实现
- PATINDEX,NULLIF,ISNULL
- JAVA 单个或多个下载服务器上带超链接的文件 并压缩后下载
- WinForm线程监控
- Kafka VS ActiveMQ
- ViewPager嵌套Fragment生命周期变换问题
- Ubuntu 下使用QQ
- 06-3. 单词长度(15)
- python模块chardet下载及介绍
- SecureCRT远程连接Linux服务器及相关配置
- MYSQL数据插入 乱码问题 default-character-set=latin1改成default-character-set=utf8 在my.ini文件中。需要改动两处
- 类的加载(load)和初始化(initialize)
- spring基础
- c#通常什么地方遇到数据库为空 System.DBNull.Value 作者:admin