@Override public Object instantiateItem(ViewGroup container, int position) { Fragment fragment = (Fragment) super.instantiateItem(container, position); fragments.set(position, fragment); return fragment; }
@Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); fragments.set(position, null); }
@Override public Parcelable saveState() { Parcelable p = super.saveState(); Bundle bundle = new Bundle(); bundle.putParcelable(ADS_FRAGMENT_STATE_SUPER_STATE, p); bundle.putInt(ADS_FRAGMENT_STATE_PAGES, mPages.size()); if (0 < mPages.size()) { for (int i = 0; i < mPages.size(); i++) { int position = mPages.keyAt(i); bundle.putInt(createCacheIndex(i), position); Fragment f = mPages.get(position); mFragmentManager.putFragment(bundle, createCacheKey(position), f); } } return bundle; }
@Override public void restoreState(Parcelable state, ClassLoader loader) { Bundle bundle = (Bundle) state; int pages = bundle.getInt(ADS_FRAGMENT_STATE_PAGES); if (0 < pages) { for (int i = 0; i < pages; i++) { int position = bundle.getInt(createCacheIndex(i)); Fragment f = mFragmentManager.getFragment(bundle, createCacheKey(position)); mPages.put(position, f); } } Parcelable p = bundle.getParcelable(ADS_FRAGMENT_STATE_SUPER_STATE); super.restoreState(p, loader); }
@Override public void setPrimaryItem(ViewGroup container, int position, Object object) { if (currentFragment != object) { if (currentFragment != null) { // tell old fragment it's no longer visible currentFragment.onHide(); } currentFragment = ((StreamPageFragment) object); listener.OnItemSelected(channelList.get(position)); } super.setPrimaryItem(container, position, object); }
@Override public Object instantiateItem(ViewGroup container, int position) { mFragments[position] = (Fragment) super.instantiateItem(container, position); return mFragments[position]; }
@Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { mRegisteredFragments.remove(position); super.destroyItem(container, position, object); }
@NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { OdysseyFragment fragment = (OdysseyFragment) super.instantiateItem(container, position); mRegisteredFragments.put(position, fragment); return fragment; }
@Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { if (0 <= mPages.indexOfKey(position)) { mPages.remove(position); } super.destroyItem(container, position, object); }
@NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { // Allow the non-primary fragments to start as soon as they are visible Fragment f = (Fragment) super.instantiateItem(container, position); f.setUserVisibleHint(true); return f; } }