Example usage for android.support.v4.app FragmentManager saveFragmentInstanceState

List of usage examples for android.support.v4.app FragmentManager saveFragmentInstanceState

Introduction

In this page you can find the example usage for android.support.v4.app FragmentManager saveFragmentInstanceState.

Prototype

public abstract Fragment.SavedState saveFragmentInstanceState(Fragment f);

Source Link

Document

Save the current instance state of the given Fragment.

Usage

From source file:com.jetradar.multibackstack.BackStackEntry.java

@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();//from w  w w  .j av a2 s.  c  om
    return new BackStackEntry(fname, state, args);
}

From source file:com.scvngr.levelup.core.test.TestThreadingUtils.java

/**
 * Saves a {@link Fragment} to instance state, removes it from the activity. Then creates a new
 * one of the same class, restores the instance state, and re-adds it to the activity.
 *
 * @param <T> the type of Fragment
 * @param instrumentation the test {@link Instrumentation}.
 * @param activity the {@link FragmentActivity} to add it to.
 * @param fragment Fragment to remove and re-add.
 * @return the new instance of the input fragment created using the saved/restored state.
 *//*  ww w .  j  a  v  a2s .  c om*/
@NonNull
public static <T extends Fragment> T saveAndRestoreFragmentStateSync(
        @NonNull final Instrumentation instrumentation, @NonNull final FragmentActivity activity,
        @NonNull final T fragment) {
    final boolean inView = fragment.isInLayout();

    final FragmentManager fm = activity.getSupportFragmentManager();
    final SavedState savedState = fm.saveFragmentInstanceState(fragment);

    @SuppressWarnings("unchecked")
    final T newInstance = (T) Fragment.instantiate(activity, fragment.getClass().getName());
    newInstance.setInitialSavedState(savedState);

    runOnMainSync(instrumentation, activity, new Runnable() {
        @Override
        public void run() {
            fm.beginTransaction().remove(fragment).commit();
        }
    });

    addFragmentInMainSync(instrumentation, activity, newInstance, inView);

    return newInstance;
}

From source file:org.solovyev.android.messenger.BaseFragmentActivity.java

@Nonnull
private MultiPaneFragmentDef newCopyingFragmentDef(@Nonnull final Fragment fragment, boolean addToBackStack) {
    final FragmentManager fm = getSupportFragmentManager();

    final Fragment.SavedState fragmentSavedState = fm.saveFragmentInstanceState(fragment);
    final String fragmentTag = fragment.getTag();
    final Bundle fragmentArguments = fragment.getArguments();

    return MultiPaneFragmentDef.newInstance(fragmentTag, addToBackStack, new Builder<Fragment>() {
        @Nonnull//w  w  w  .j  ava  2 s  .c  o  m
        @Override
        public Fragment build() {
            final Fragment newFragment = Fragment.instantiate(BaseFragmentActivity.this,
                    fragment.getClass().getName(), fragmentArguments);
            newFragment.setInitialSavedState(fragmentSavedState);
            return newFragment;
        }
    }, null);
}

From source file:com.erevacation.challenge.ui.base.navigator.BaseNavigator.java

private void replaceFragmentInternal(FragmentManager fm, @IdRes int containerId, Fragment fragment,
        String fragmentTag, Bundle args, boolean addToBackStack, String backStackTag) {

    if (args != null) {
        fragment.setArguments(args);/*from   ww w. jav  a  2  s.c o  m*/
    }

    if (addToBackStack) {
        Fragment replacedFragment = fm.findFragmentById(containerId);
        if (replacedFragment != null) {
            fm.saveFragmentInstanceState(replacedFragment);
        }

        mFragmentBackStackAnimations.apply(fm.beginTransaction()).add(containerId, fragment, fragmentTag)
                .addToBackStack(backStackTag).commit();
        fm.executePendingTransactions();
    } else {
        mFragmentAnimations.apply(fm.beginTransaction()).replace(containerId, fragment, fragmentTag)
                .commitNow();
    }
}

From source file:com.erevacation.reactiveanimations.ui.base.navigator.BaseNavigator.java

private void replaceFragmentInternal(FragmentManager fm, @IdRes int containerId, Fragment fragment,
        String fragmentTag, Bundle args, boolean addToBackStack, String backStackTag) {

    if (args != null) {
        fragment.setArguments(args);// ww  w .j av  a 2  s. c  o  m
    }

    if (addToBackStack) {
        Fragment replacedFragment = fm.findFragmentById(containerId);
        if (replacedFragment != null) {
            fm.saveFragmentInstanceState(replacedFragment);
        }

        mFragmentBackStackAnimations.apply(fm.beginTransaction()).replace(containerId, fragment, fragmentTag)
                .addToBackStack(backStackTag).commit();
        fm.executePendingTransactions();
    } else {
        mFragmentAnimations.apply(fm.beginTransaction()).replace(containerId, fragment, fragmentTag)
                .commitNow();
    }
}

From source file:com.erevacation.challenge.ui.base.navigator.BaseNavigator.java

private void replaceFragmentInternalWithSharedElement(FragmentManager fm, @IdRes int containerId,
        Fragment fragment, String fragmentTag, Bundle args, boolean addToBackStack, String backStackTag,
        View sharedElement, String transitionName) {

    if (args != null) {
        fragment.setArguments(args);//from  w  ww  .j a  v a  2 s .  c  om
    }

    if (addToBackStack) {
        Fragment replacedFragment = fm.findFragmentById(containerId);
        if (replacedFragment != null) {
            fm.saveFragmentInstanceState(replacedFragment);
        }

        mFragmentBackStackAnimations.apply(fm.beginTransaction())
                .addSharedElement(sharedElement, transitionName).add(containerId, fragment, fragmentTag)
                .addToBackStack(backStackTag).commit();
        fm.executePendingTransactions();
    } else {
        mFragmentAnimations.apply(fm.beginTransaction()).replace(containerId, fragment, fragmentTag)
                .commitNow();
    }
}

From source file:com.erevacation.reactiveanimations.ui.base.navigator.BaseNavigator.java

private void replaceFragmentInternalWithSharedElement(FragmentManager fm, @IdRes int containerId,
        Fragment fragment, String fragmentTag, Bundle args, boolean addToBackStack, String backStackTag,
        View sharedElement, String transitionName) {

    if (args != null) {
        fragment.setArguments(args);//from   www .  j a v  a 2 s  .c  om
    }

    if (addToBackStack) {
        Fragment replacedFragment = fm.findFragmentById(containerId);
        if (replacedFragment != null) {
            fm.saveFragmentInstanceState(replacedFragment);
        }

        mFragmentBackStackAnimations.apply(fm.beginTransaction())
                .addSharedElement(sharedElement, transitionName).replace(containerId, fragment, fragmentTag)
                .addToBackStack(backStackTag).commit();
        fm.executePendingTransactions();
    } else {
        mFragmentAnimations.apply(fm.beginTransaction()).replace(containerId, fragment, fragmentTag)
                .commitNow();
    }
}