diff options
| -rw-r--r-- | core/java/android/app/FragmentManager.java | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index 95d55dc2d6e6..3e26e0f39a10 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -2603,23 +2603,25 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate f.mTargetIndex = f.mTarget != null ? f.mTarget.mIndex : -1; if (DEBUG) Log.v(TAG, "retainNonConfig: keeping retained " + f); } - boolean addedChild = false; + FragmentManagerNonConfig child; if (f.mChildFragmentManager != null) { f.mChildFragmentManager.saveNonConfig(); - FragmentManagerNonConfig child = f.mChildFragmentManager.mSavedNonConfig; - if (child != null) { - if (childFragments == null) { - childFragments = new ArrayList<>(); - for (int j = 0; j < i; j++) { - childFragments.add(null); - } - } - childFragments.add(child); - addedChild = true; + child = f.mChildFragmentManager.mSavedNonConfig; + } else { + // f.mChildNonConfig may be not null, when the parent fragment is + // in the backstack. + child = f.mChildNonConfig; + } + + if (childFragments == null && child != null) { + childFragments = new ArrayList<>(mActive.size()); + for (int j = 0; j < i; j++) { + childFragments.add(null); } } - if (childFragments != null && !addedChild) { - childFragments.add(null); + + if (childFragments != null) { + childFragments.add(child); } } } |