您的位置:首页 > 移动开发 > Android开发

解决fragment+viewpager第二次进入的时候没有数据的问题

2014-07-31 17:08 441 查看
问题描述:
我的项目类似新浪新闻,侧边栏有几个item,每个item对应一个fragment。其中有一个item A对应的JobFragment 中有viewpager,然后viewpager中又有4个fragment。

选中JobFragment时,首先初始化界面,这时候没有数据,然后界面初始化完后,经过访问网络获取数据,然后填充数据到viewpager中的4个fragment中。如图示:



222244c33nwe8npry888vn.png (172.36 KB, 下载次数: 40)

下载附件  保存到相册

2013-10-1 16:56 上传

遇到的问题:第一次选中JobFragment的时候,界面能够正常初始化,而且获取的网络数据也能正常显示到4个fragment中,问题是,如果切换到其他item对应的fragment时候再选中

item A对应的JobFragment,也就是第二次进入JobFragment,界面可以正常显示,但是数据就是不能显示出来,调试的时候发现数据都能正常显示,但是界面就是一片

空白,而且发现第二次进入的时候viewpager中的4个fragment的onCreateView方法都不执行。将viewpager多滑动几次才会执行onCreateView方法。数据也就能够正常显示。
问题分析:其实原因就在第二次进入JobFragment时viewpager中的4个fragment的onCreateView没有调用,再向上一层分析,发现onCreateView的调用,是由于被类JobPagerAdapter

中的getItem的调用。其实,为什么会出现第二次进入的时候viewpager中的4个fragment的onCreateView方法都不执行也就是getItem方法没有调用呢?原因就在于FragmentPagerAdapter

的设计原理,关于FragmentStatePagerAdapter和FragmentPagerAdapter的详细区别,请移步为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
问题解决:问题发现并分析透了就可以对问题进行处理。很简单就把FragmentPagerAdapter替换成FragmentStatePagerAdapter就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐