Activity更新Fragment
(TabLayout ViewPager Fragment)
在activity里调用
adapter.notifyDataSetChanged();
适配器的写法:
方法1:(适配器继承FragmentStatePagerAdapter)
public class CoursePagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
FragmentManager fm;
public CoursePagerAdapter(FragmentManager fm) {
super(fm);
this.fm = fm;
}
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
public void clearFragment() {
mFragments.clear();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
方法2:(添加清除缓存的Fragment)
public class CoursePagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
FragmentManager fm;
public CoursePagerAdapter(FragmentManager fm) {
super(fm);
this.fm = fm;
}
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
public void clearFragment() {
removeALlFragments();
mFragments.clear();
}
private void removeALlFragments(){
FragmentTransaction transaction = fm.beginTransaction();
for (int i=0; i<mFragments.size(); i++){
Fragment fg = mFragments.get(i);
transaction.remove(fg);
}
transaction.commit();
mFragments.clear();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}