android.app.Fragment#setInitialSavedState ( )源码实例Demo

下面列出了android.app.Fragment#setInitialSavedState ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: buck   文件: ExoHelper.java
/**
 * Try refreshing the given Fragment in place, preserving construction args. The new Fragment will
 * be constructed via a fresh class lookup. This method must be called from the UI thread
 *
 * @param fragment the fragment to refresh
 * @param preserveState if true, attempt to save the Fragment's current state and restore it to
 *     the new instance of the fragment
 */
public static void refreshFragment(Fragment fragment, boolean preserveState) {
  assertIsUiThread();
  FragmentManager manager = fragment.getFragmentManager();
  final Bundle args = fragment.getArguments();
  Fragment replacement = createFragment(fragment.getClass().getName(), args);

  String tag = fragment.getTag();

  if (preserveState) {
    // Restore any state that's possible
    final SavedState savedState = manager.saveFragmentInstanceState(fragment);
    replacement.setInitialSavedState(savedState);
  }

  int containerViewId = ((View) fragment.getView().getParent()).getId();
  final FragmentTransaction transaction = manager.beginTransaction();
  transaction.remove(fragment);
  if (tag != null) {
    transaction.add(containerViewId, replacement, tag);
  } else {
    transaction.add(containerViewId, replacement);
  }
  transaction.commit();
}
 
@SuppressLint("NewApi")
@Override
public Object instantiateItem(ViewGroup container, int position) {
    // If we already have this item instantiated, there is nothing
    // to do.  This can happen when we are restoring the entire pager
    // from its saved state, where the fragment manager has already
    // taken care of restoring the fragments we previously had instantiated.
    if (mFragments.size() > position) {
        Fragment f = mFragments.get(position);
        if (f != null) {
            return f;
        }
    }

    if (mCurTransaction == null) {
        mCurTransaction = mFragmentManager.beginTransaction();
    }

    Fragment fragment = getItem(position);
    if (DEBUG) Log.v(TAG, "Adding item #" + position + ": f=" + fragment);
    if (mSavedState.size() > position) {
        Fragment.SavedState fss = mSavedState.get(position);
        if (fss != null) {
            fragment.setInitialSavedState(fss);
        }
    }
    while (mFragments.size() <= position) {
        mFragments.add(null);
    }
    fragment.setMenuVisibility(false);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
        fragment.setUserVisibleHint(false);
    }
    mFragments.set(position, fragment);
    mCurTransaction.add(container.getId(), fragment);

    return fragment;
}
 
public Object instantiateItem(ViewGroup viewgroup, int i)
{
    if (f.size() > i)
    {
        Fragment fragment1 = (Fragment)f.get(i);
        if (fragment1 != null)
        {
            return fragment1;
        }
    }
    if (d == null)
    {
        d = c.beginTransaction();
    }
    Fragment fragment = getItem(i);
    if (e.size() > i)
    {
        android.app.Fragment.SavedState savedstate = (android.app.Fragment.SavedState)e.get(i);
        if (savedstate != null)
        {
            fragment.setInitialSavedState(savedstate);
        }
    }
    for (; f.size() <= i; f.add(null)) { }
    FragmentCompat.setMenuVisibility(fragment, false);
    FragmentCompat.setUserVisibleHint(fragment, false);
    f.set(i, fragment);
    d.add(viewgroup.getId(), fragment);
    return fragment;
}
 
源代码4 项目: BlackLight   文件: FragmentStatePagerAdapter.java
@Override
public Object instantiateItem(ViewGroup container, int position) {
    // If we already have this item instantiated, there is nothing
    // to do.  This can happen when we are restoring the entire pager
    // from its saved state, where the fragment manager has already
    // taken care of restoring the fragments we previously had instantiated.
    if (mFragments.size() > position) {
        Fragment f = mFragments.get(position);
        if (f != null) {
            return f;
        }
    }

    if (mCurTransaction == null) {
        mCurTransaction = mFragmentManager.beginTransaction();
    }

    Fragment fragment = getItem(position);
    if (DEBUG) Log.v(TAG, "Adding item #" + position + ": f=" + fragment);
    if (mSavedState.size() > position) {
        Fragment.SavedState fss = mSavedState.get(position);
        if (fss != null) {
            fragment.setInitialSavedState(fss);
        }
    }
    while (mFragments.size() <= position) {
        mFragments.add(null);
    }
    fragment.setMenuVisibility(false);
    fragment.setUserVisibleHint(false);
    mFragments.set(position, fragment);
    mCurTransaction.add(container.getId(), fragment);

    return fragment;
}
 
源代码5 项目: V.FlyoutTest   文件: FragmentStatePagerAdapter.java
@Override
public Object instantiateItem(ViewGroup container, int position) {
    // If we already have this item instantiated, there is nothing
    // to do.  This can happen when we are restoring the entire pager
    // from its saved state, where the fragment manager has already
    // taken care of restoring the fragments we previously had instantiated.
    if (mFragments.size() > position) {
        Fragment f = mFragments.get(position);
        if (f != null) {
            return f;
        }
    }

    if (mCurTransaction == null) {
        mCurTransaction = mFragmentManager.beginTransaction();
    }

    Fragment fragment = getItem(position);
    if (DEBUG) Log.v(TAG, "Adding item #" + position + ": f=" + fragment);
    if (mSavedState.size() > position) {
        Fragment.SavedState fss = mSavedState.get(position);
        if (fss != null) {
            fragment.setInitialSavedState(fss);
        }
    }
    while (mFragments.size() <= position) {
        mFragments.add(null);
    }
    FragmentCompat.setMenuVisibility(fragment, false);
    FragmentCompat.setUserVisibleHint(fragment, false);
    mFragments.set(position, fragment);
    mCurTransaction.add(container.getId(), fragment);

    return fragment;
}
 
@Override public Object instantiateItem(ViewGroup container, int position) {
    // If we already have this item instantiated, there is nothing
    // to do.  This can happen when we are restoring the entire pager
    // from its saved state, where the fragment manager has already
    // taken care of restoring the fragments we previously had instantiated.
    if (mFragments.size() > position) {
        Fragment f = mFragments.get(position);
        if (f != null) {
            int newPos = getItemPosition(f);
            if (position == newPos) {
                if (f.getView() != null && f.getView().getParent() != container) {
                    ((ViewGroup) f.getView().getParent()).removeView(f.getView());
                    container.addView(f.getView());
                }
                return f;
            } else {
                mFragments.remove(position);
                mFragments.ensureCapacity(newPos + 1);
                for (int i = mFragments.size(); i < (newPos +1); i++) {
                    mFragments.add(null);
                }
                mFragments.set(newPos, f);
            }
        }
    }

    if (mCurTransaction == null) {
        mCurTransaction = mFragmentManager.beginTransaction();
    }

    Fragment fragment = getItem(position);
    if (DEBUG) Log.v(TAG, "Adding item #" + position + ": f=" + fragment);
    if (mSavedState.size() > position) {
        Fragment.SavedState fss = mSavedState.get(position);
        if (fss != null) {
            fragment.setInitialSavedState(fss);
        }
    }
    while (mFragments.size() <= position) {
        mFragments.add(null);
    }
    fragment.setMenuVisibility(false);
    mFragments.set(position, fragment);
    mCurTransaction.add(container.getId(), fragment, getTag(position));

    return fragment;
}