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不更新
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.