Merge "Correctly save retained fragments in the backstack" into oc-dev
am: ce8a4b89c8
Change-Id: I755b0f38c907d1ae7bf12df67f4b10590a9016bf
This commit is contained in:
@@ -2603,23 +2603,25 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
|
|||||||
f.mTargetIndex = f.mTarget != null ? f.mTarget.mIndex : -1;
|
f.mTargetIndex = f.mTarget != null ? f.mTarget.mIndex : -1;
|
||||||
if (DEBUG) Log.v(TAG, "retainNonConfig: keeping retained " + f);
|
if (DEBUG) Log.v(TAG, "retainNonConfig: keeping retained " + f);
|
||||||
}
|
}
|
||||||
boolean addedChild = false;
|
FragmentManagerNonConfig child;
|
||||||
if (f.mChildFragmentManager != null) {
|
if (f.mChildFragmentManager != null) {
|
||||||
f.mChildFragmentManager.saveNonConfig();
|
f.mChildFragmentManager.saveNonConfig();
|
||||||
FragmentManagerNonConfig child = f.mChildFragmentManager.mSavedNonConfig;
|
child = f.mChildFragmentManager.mSavedNonConfig;
|
||||||
if (child != null) {
|
} else {
|
||||||
if (childFragments == null) {
|
// f.mChildNonConfig may be not null, when the parent fragment is
|
||||||
childFragments = new ArrayList<>();
|
// in the backstack.
|
||||||
for (int j = 0; j < i; j++) {
|
child = f.mChildNonConfig;
|
||||||
childFragments.add(null);
|
}
|
||||||
}
|
|
||||||
}
|
if (childFragments == null && child != null) {
|
||||||
childFragments.add(child);
|
childFragments = new ArrayList<>(mActive.size());
|
||||||
addedChild = true;
|
for (int j = 0; j < i; j++) {
|
||||||
|
childFragments.add(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (childFragments != null && !addedChild) {
|
|
||||||
childFragments.add(null);
|
if (childFragments != null) {
|
||||||
|
childFragments.add(child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user