在写一个视频播放应用时,需要根据用户的选择,动态展示不同(个数)的fragment,自然就想到了使用ViewPager的setAdapter动态设置FragmentPagerAdapter来切换, 结果发现不起作用,设置完后不走adapter的getItem()回调,要知道,新的fragment是在这里new出的。尝试调用mPagerAdapter.notifyDataSetChanged(),问题依然。
没找到其他好的方法,只好把原来的frament一一remove掉:
private List<Fragment> mFragmentInstanceList;
FragmentVideoList fragment = FragmentVideoList.newInstance();
mFragmentInstanceList.add(fragment); //保存存量的fragment
......
if (mViewPager.getAdapter() != null) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
for(Fragment fragment:mFragmentInstanceList){
ft.remove(fragment); //remove所有的fragment
}
ft.commit();
}
//重写构建adapter
mPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mPagerAdapter);
mTabPageIndicator.notifyDataSetChanged();