@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } if (DEBUG) Log.v(TAG, "Removing item #" + position + ": f=" + object + " v=" + ((Fragment)object).getView()); while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, fragment.isAdded() ? mFragmentManager.saveFragmentInstanceState(fragment) : null); mFragments.set(position, null); try { fragment.getView().clearAnimation(); } catch (Exception e) { e.printStackTrace(); } mCurTransaction.remove(fragment); }
private FragmentManager mFragmentManager; public MyPagerAdapter(FragmentManager fm) { super(fm); mFragmentManager = fm; } @Override public Fragment getItem(int position) { // figure out which fragment you want at this position Fragment fragment = new MyFragment(); // retrieve your savedState from wherever you put it fragment.setInitialSavedState(savedState); return fragment; } @Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; Fragment.SavedState savedState = mFragmentManager.saveFragmentInstanceState(fragment) // save your fragment state somewhere here super.destroyItem(container, position, object); }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (currentTransaction == null) { currentTransaction = fragmentManager.beginTransaction(); } while (savedState.size() <= position) { savedState.add(null); } savedState.set(position, fragmentManager.saveFragmentInstanceState(fragment)); fragments.set(position, null); currentTransaction.remove(fragment); }
private void saveFragmentState(int index, Fragment fragment) { Fragment.SavedState savedState = getSupportFragmentManager().saveFragmentInstanceState(fragment); savedStateSparseArray.put(index, savedState); }
@SuppressLint("CommitTransaction") @Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, mFragmentManager.saveFragmentInstanceState(fragment)); mFragments.set(position, null); mCurTransaction.remove(fragment); }
@NonNull public static BackStackEntry create(@NonNull FragmentManager fm, @NonNull Fragment f) { String fname = f.getClass().getName(); SavedState state = fm.saveFragmentInstanceState(f); Bundle args = f.getArguments(); return new BackStackEntry(fname, state, args); }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } if (DEBUG) Log.v(TAG, "Removing item #" + position + ": f=" + object + " v=" + ((Fragment) object).getView()); while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, mFragmentManager.saveFragmentInstanceState(fragment)); mFragments.set(position, null); mCurTransaction.remove(fragment); }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment)object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } if (DEBUG) Log.v(TAG, "Removing item #" + position + ": f=" + object + " v=" + ((Fragment)object).getView()); while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, mFragmentManager.saveFragmentInstanceState(fragment)); mFragments.set(position, null); mCurTransaction.remove(fragment); }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment)object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } if (DEBUG) Log.v(TAG, "Removing item #" + position + ": f=" + object + " v=" + ((Fragment)object).getView()); while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, mFragmentManager.saveFragmentInstanceState(fragment)); mFragments.set(position, null); mCurTransaction.remove(fragment); }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, fragment.isAdded() ? mFragmentManager.saveFragmentInstanceState(fragment) : null); mFragments.set(position, null); mCurTransaction.remove(fragment); }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } if (DEBUG) { Log.v(TAG, "Removing item #" + position + ": f=" + object + " v=" + ((Fragment) object).getView()); } while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, mFragmentManager.saveFragmentInstanceState(fragment)); mFragments.set(position, null); mCurTransaction.remove(fragment); }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } if (DEBUG) Log.v(TAG, "Removing item #" + position + ": f=" + object + " v=" + ((Fragment) object).getView()); while (mSavedState.size() <= position) { mSavedState.add(null); } mSavedState.set(position, fragment.isAdded() ? mFragmentManager.saveFragmentInstanceState(fragment) : null); mFragments.set(position, null); mCurTransaction.remove(fragment); }
@SuppressLint("CommitTransaction") @Override public void destroyItem(ViewGroup container, int position, Object object) { if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } while (mSavedState.size() <= position) { mSavedState.add(null); } while (mFragments.size() <= position) { mFragments.add(null); } Fragment f = findFragmentByItem(object); if (f != null) { // if mFragments does not contains f, // there is no need to save f because it is removed by user. if (mFragments.contains(f)) { // fragment is destroyed temporary. mSavedState.set(position, f.isAdded() ? mFragmentManager.saveFragmentInstanceState(f) : null); mFragments.set(position, null); } mCurTransaction.remove(f); } }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (mCurrentTransaction == null) { mCurrentTransaction = mFragmentManager.beginTransaction(); } int id = getItemId(position); if(DEBUG) Log.v(TAG, "Removing item #" + position + ": id=" + id + ", f=" + object + " v=" + ((Fragment) object).getView()); // The Fragment instance will be destroyed when finishUpdate() called. // Don't worry. Save it's state here! mSavedState.put(id, mFragmentManager.saveFragmentInstanceState(fragment)); // Remove it from cache and the FragmentManager. mFragments.remove(id); mCurrentTransaction.remove(fragment); }
private void setCurrentFragment(Fragment fragment, String type) { updateNavigationUI(type); if(currentFragment != null && isFragmentStateSavable(currentFragmentType)) { Log.d(TAG, "setCurrentFragment() saving fragment state: " + currentFragmentType); savedFragmentStates.put(currentFragmentType, getSupportFragmentManager() .saveFragmentInstanceState(currentFragment)); } getSupportFragmentManager().beginTransaction() .replace(R.id.main_content_frame, fragment, type) .commit(); currentFragment = fragment; currentFragmentType = type; setParametersToFragment(fragment); }
/** */ @Override @SuppressLint("CommitTransaction") public void destroyItem(ViewGroup container, int position, Object object) { if (mPendingTransaction == null) { // Will be committed in call to finishUpdate(...). this.mPendingTransaction = mFragmentManager.beginTransaction(); } final Fragment fragment = (Fragment) object; if (PagerAdaptersConfig.DEBUG_LOG_ENABLED) { Log.v(TAG, "Removing item(id: " + getItemId(position) + ", fragment: " + fragment + ", view: " + fragment.getView() + ")."); } while (mSavedState.size() <= position) { this.mSavedState.add(null); } this.mSavedState.set( position, fragment.isAdded() ? mFragmentManager.saveFragmentInstanceState(fragment) : null ); this.mFragments.set(position, null); this.mPendingTransaction.remove(fragment); }
/** */ @Override @SuppressLint("CommitTransaction") public void destroyItem(ViewGroup container, int position, Object object) { if (mPendingTransaction == null) { // Will be committed in call to finishUpdate(...). this.mPendingTransaction = mFragmentManager.beginTransaction(); } final Fragment fragment = (Fragment) object; if (PagerAdaptersConfig.DEBUG_LOG_ENABLED) { Log.v(TAG, "Removing item(id: " + getItemId(position) + ", fragment: " + fragment + ", view: " + fragment.getView() + ")."); } while (mSavedState.size() <= position) { this.mSavedState.add(null); } this.mSavedState.set( position, fragment.isAdded() ? mFragmentManager.saveFragmentInstanceState(fragment) : null ); this.mFragments.set(position, null); this.mPendingTransaction.remove(fragment); }
@Override public void onViewRecycled(FragmentViewHolder holder) { if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } if (DEBUG) Log.v(TAG, "Removing item #"); int tagId = genTagId(holder.getAdapterPosition()); Fragment f = mFragmentManager.findFragmentByTag(tagId + ""); if (f != null) { if (DEBUG) Log.v(TAG, "Removing fragment #"); mStates.put(tagId, mFragmentManager.saveFragmentInstanceState(f)); mCurTransaction.remove(f); mCurTransaction.commitAllowingStateLoss(); mCurTransaction = null; mFragmentManager.executePendingTransactions(); } if (holder.itemView instanceof ViewGroup) { ((ViewGroup) holder.itemView).removeAllViews(); } super.onViewRecycled(holder); }
@Override public void onViewDetachedFromWindow(View v) { if (DEBUG) Log.v(TAG, "Removing fragment #"); final int tagId = genTagId(getLayoutPosition()); Fragment frag = mFragmentManager.findFragmentByTag(tagId + ""); if (frag == null) { return; } if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } mStates.put(tagId, mFragmentManager.saveFragmentInstanceState(frag)); mCurTransaction.remove(frag); mCurTransaction.commitAllowingStateLoss(); mCurTransaction = null; mFragmentManager.executePendingTransactions(); onDestroyItem(getLayoutPosition(), frag); } }
@Override public void destroyItem(ViewGroup container, int position, @NonNull Object object) { Fragment fragment = (Fragment) object; int currentPosition = getItemPosition(fragment); int index = mFragments.indexOfValue(fragment); long fragmentKey = -1; if (index != -1) { fragmentKey = mFragments.keyAt(index); mFragments.removeAt(index); } //item hasn't been removed if (fragment.isAdded() && currentPosition != POSITION_NONE) { mSavedStates.put(fragmentKey, mFragmentManager.saveFragmentInstanceState(fragment)); } else { mSavedStates.remove(fragmentKey); } if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } mCurTransaction.remove(fragment); }