summaryrefslogtreecommitdiffstats
path: root/core/java/android/app/FragmentManager.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-06-05 12:26:10 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-06-05 12:26:10 -0700
commit33644b9ba7d092d5686b4d85c0006066b78fcf2d (patch)
treed9353308ad629d60363f10ccce77f994d42dfeae /core/java/android/app/FragmentManager.java
parent0deff3f7e43434c0216302e05c5123c537eaf4e7 (diff)
parent4a683a343083ec2b8aed1ee63669dbade6c0379f (diff)
downloadframeworks_base-33644b9ba7d092d5686b4d85c0006066b78fcf2d.zip
frameworks_base-33644b9ba7d092d5686b4d85c0006066b78fcf2d.tar.gz
frameworks_base-33644b9ba7d092d5686b4d85c0006066b78fcf2d.tar.bz2
am 4a683a34: am 1ad66b2f: Merge "Fix issue #6584942 IllegalStateException: Failure saving state..." into jb-dev
* commit '4a683a343083ec2b8aed1ee63669dbade6c0379f': Fix issue #6584942 IllegalStateException: Failure saving state...
Diffstat (limited to 'core/java/android/app/FragmentManager.java')
-rw-r--r--core/java/android/app/FragmentManager.java31
1 files changed, 17 insertions, 14 deletions
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index 7ad7a9c..d8777fb 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -726,11 +726,12 @@ final class FragmentManagerImpl extends FragmentManager {
return;
}
f.mDeferStart = false;
- moveToState(f, mCurState, 0, 0);
+ moveToState(f, mCurState, 0, 0, false);
}
}
- void moveToState(Fragment f, int newState, int transit, int transitionStyle) {
+ void moveToState(Fragment f, int newState, int transit, int transitionStyle,
+ boolean keepActive) {
// Fragments that are not currently added will sit in the onCreate() state.
if (!f.mAdded && newState > Fragment.CREATED) {
newState = Fragment.CREATED;
@@ -757,7 +758,7 @@ final class FragmentManagerImpl extends FragmentManager {
// animation, move to whatever the final state should be once
// the animation is done, and then we can proceed from there.
f.mAnimatingAway = null;
- moveToState(f, f.mStateAfterAnimating, 0, 0);
+ moveToState(f, f.mStateAfterAnimating, 0, 0, true);
}
switch (f.mState) {
case Fragment.INITIALIZING:
@@ -940,7 +941,7 @@ final class FragmentManagerImpl extends FragmentManager {
if (fragment.mAnimatingAway != null) {
fragment.mAnimatingAway = null;
moveToState(fragment, fragment.mStateAfterAnimating,
- 0, 0);
+ 0, 0, false);
}
}
});
@@ -992,11 +993,13 @@ final class FragmentManagerImpl extends FragmentManager {
throw new SuperNotCalledException("Fragment " + f
+ " did not call through to super.onDetach()");
}
- if (!f.mRetaining) {
- makeInactive(f);
- } else {
- f.mActivity = null;
- f.mFragmentManager = null;
+ if (!keepActive) {
+ if (!f.mRetaining) {
+ makeInactive(f);
+ } else {
+ f.mActivity = null;
+ f.mFragmentManager = null;
+ }
}
}
}
@@ -1007,7 +1010,7 @@ final class FragmentManagerImpl extends FragmentManager {
}
void moveToState(Fragment f) {
- moveToState(f, mCurState, 0, 0);
+ moveToState(f, mCurState, 0, 0, false);
}
void moveToState(int newState, boolean always) {
@@ -1029,7 +1032,7 @@ final class FragmentManagerImpl extends FragmentManager {
for (int i=0; i<mActive.size(); i++) {
Fragment f = mActive.get(i);
if (f != null) {
- moveToState(f, newState, transit, transitStyle);
+ moveToState(f, newState, transit, transitStyle, false);
if (f.mLoaderManager != null) {
loadersRunning |= f.mLoaderManager.hasRunningLoaders();
}
@@ -1122,7 +1125,7 @@ final class FragmentManagerImpl extends FragmentManager {
fragment.mAdded = false;
fragment.mRemoving = true;
moveToState(fragment, inactive ? Fragment.INITIALIZING : Fragment.CREATED,
- transition, transitionStyle);
+ transition, transitionStyle, false);
}
}
@@ -1189,7 +1192,7 @@ final class FragmentManagerImpl extends FragmentManager {
mNeedMenuInvalidate = true;
}
fragment.mAdded = false;
- moveToState(fragment, Fragment.CREATED, transition, transitionStyle);
+ moveToState(fragment, Fragment.CREATED, transition, transitionStyle, false);
}
}
}
@@ -1204,7 +1207,7 @@ final class FragmentManagerImpl extends FragmentManager {
if (fragment.mHasMenu && fragment.mMenuVisible) {
mNeedMenuInvalidate = true;
}
- moveToState(fragment, mCurState, transition, transitionStyle);
+ moveToState(fragment, mCurState, transition, transitionStyle, false);
}
}
}