今天遇到了一个关于fragment的奇怪问题。Fragment切到其他页面,当关闭其他页面时在Activty里调用adapter.notifyDataSetChanged();后,MyPagerAdapter居然不调用getItem()
解决方案如下:
1.MyPagerAdapter 需继承 FragmentStatePagerAdapter,而不是FragmentPagerAdapter
2.重写MyPagerAdapter 的getItemPosition 方法
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
//PagerAdapter.notifyDataSetChanged() 被触发时,ViewPager.dataSetChanged() 也可以被触发。该函数将使用 getItemPosition() 的返回 //值来进行判断,如果为 POSITION_UNCHANGED,则什么都不做;如果为 POSITION_NONE,则调用 PagerAdapter.destroyItem() 来去掉 //该对象,并设置为需要刷新 (needPopulate = true) 以便触发 PagerAdapter.instantiateItem() 来生成新的对象。因此我们这里写死
//为POSITION_NONE
return PagerAdapter.POSITION_NONE;
}
至此问题解决