ViewPager中怎么获取Fragment
来源:互联网 发布:健康体检软件系统 编辑:程序博客网 时间:2024/05/01 23:23
一般来讲,我们再使用viewpager的时候,是在代码中动态的添加fragment。此时,我们不能去指定fragment的id,也不能指定他的tag,如果你一定要去指定tag,运行时会提示,tag已经被指定。那么,在动态的添加了fragment之后,我们如何能获取到该fragment并修改其中的内容呢。两种方法:
第一种方法实际上是一种hack方法,并没有官方文档说明支持。代码如下:
SomeFragment someFragment = getSupportFragmentManage
if (someFragment != null) //可能没有实例化
{
if (someFragment.getView() != null)
{
someFragment.updateView();//自定义方法更新
}
}
这里要记住的就是”android:switcher:” + R.id.viewpager + “:0″ 这个字符窜表示的就是该fragment的tag,其中0 是fragment 在viewpager中的位置。R.id.viewpager是布局文件中的id.]
方法二
第二种方法更正规,因为第一种方法对基于FragmentPagerAdapter的实现是有效的,但对于
FragmentStatePagerAdapte
FragmentManager的Fragment设置tag.
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
FragmentStatePagerAdapte
SomeFragment someFragment = (SomeFragment)f.instantiateItem(pager,position);
instantiateItem(pager,position)方法会返回在position位置的fragment的引用。如果该
fragment 已经实例化了,再次调用instantiateItem(pager,position)的时候,该方法并不会调用
getItem()来再次实例化fragment,而是直接返回引用。
按理说按以上的方法应该不会出错!!但是当我初始化viewpager,然后获得相应fragment实例,调用其成员函数,发现老是出现NullPointerException,就是执行不出来!!!无语了!!偶然发现:继承自FragmentPagerAdapter的MyPagerAdapter在初始化的时候并没有执行getItem方法,getPageTitle方法倒是执行了,导致相应的fragment实例不存在,从而当调用其方法时候就会出错,事实确实如此:fragment为null,终于找到问题的所在了!
那怎么解决呢?
首先,把调用相应fragment的成员函数的语句给注释掉,这时候程序正确运行,getItem方法也正确执行了。
那么当加上调用fragment成员函数之后要怎么处理呢?既然是getItem方法没有执行,那么我就再初始化之后先延时一段时间,再调用fragment成员函数来刷新fragment,程序运行成功!!!getItem方法也正确执行了!!
- ViewPager中怎么获取Fragment
- 怎么在viewpager中获取子fragment里面的控件
- ViewPager中如何获取Fragment
- android ViewPager中获取Fragment
- 在ViewPager中获取Fragment
- activity获取viewpager中fragment里的button按钮,并设置监听怎么实现
- 获取VIEWPAGER中的FRAGMENT
- ViewPager获取Fragment
- ViewPager + Fragment 获取Tag
- 获取ViewPager中的Fragment实例 或者叫 ViewPager中Fragment的TAG
- Android杂记(4)获取ViewPager中Fragment的实例
- Android:ViewPager中获取当前界面的Fragment
- 一行代码获取ViewPager中当前显示的Fragment
- ViewPager+Fragment中fragment之间的切换的时候怎么设置调用onresume()
- Android中viewpager+fragment
- viewpager中fragment生命周期
- Fragment怎么获取上下文?
- ViewPager+Fragment获取联系人列表
- 网狐框架分析八--web登录游戏大厅流程 150629
- forward declaration 前置声明
- 嵌入式linux 博客收藏
- *********背景音乐*******
- 图像视频方面
- ViewPager中怎么获取Fragment
- 程序员篇:8个开发技巧助你薪水更上一层楼
- 三分钟教你学Git(十七) - 钩子
- linux--redhat 如何修改root用户密码
- android获取网络图片简单实现
- Linux操作系统中用RPM安装GCC过程解析
- Android 使用Parcelable序列化对象
- 工作6.30
- 破烂熊-整理过往(1)