public class ResumePreviewAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
private String[] tabTitles;
public ResumePreviewAdapter(FragmentManager fm, ArrayList<Fragment> fragments, String[] tabTitles) {
super(fm);
this.fragments = fragments;
this.tabTitles = tabTitles;
}
@Override
public Fragment getItem(int position) {
if (null != fragments && position > -1 && position < fragments.size()) {
return fragments.get(position);
}
return null;
}
@Override
public int getCount() {
return fragments == null ? 0 : fragments.size();
}
@Override
public long getItemId(int position) {
// 获取当前数据的hashCode
int hashCode = fragments.get(position).hashCode();
return hashCode;
}
@Override
public Parcelable saveState() {
return null;
}
/**
* 使用这个方式,让页面不缓存,能够在清除fragment的时候对其做了删除
* 复写pageradapter的getItemPosition方法设置tag为POSITION_NONE意思是没有找到child要求重新加载。
*
* @return
*/
@Override
public int getItemPosition(@NonNull Object object) {
return PagerAdapter.POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
@Override
public void finishUpdate(ViewGroup container) {
// 避免 android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()' on a null object reference
// bugly :https://bugly.qq.com/v2/crash-reporting/crashes/2390cd07d3/107320?pid=1
try {
super.finishUpdate(container);
} catch (Exception egnore) {
}
}
}
FragmentPagerAdapter动态增删Fragment不更新
最新推荐文章于 2024-08-13 19:41:47 发布