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

问题描述:
我的项目类似新浪新闻,侧边栏有几个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就可以了。

你可能感兴趣的:(Android开发)