Fix getting wrong instance when restoring non-config

Bug 36679897

When restoring the non-config fragments, the wrong index was
being used to lookup the fragment fromt the list of active
fragment states.

Test: Ic862fd9670408dab09ab5817cdec21e91aef001b
Change-Id: Ic5a8e723041949e6d01d4f5ddc6d54e491143b59
This commit is contained in:
George Mount
2017-03-29 14:56:05 -07:00
parent c7146beabe
commit 5dd7c9af6d

View File

@@ -2725,7 +2725,15 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
for (int i = 0; i < count; i++) {
Fragment f = nonConfigFragments.get(i);
if (DEBUG) Log.v(TAG, "restoreAllState: re-attaching retained " + f);
FragmentState fs = fms.mActive[f.mIndex];
int index = 0; // index of f in fms.mActive
while (index < fms.mActive.length && fms.mActive[index].mIndex != f.mIndex) {
index++;
}
if (index == fms.mActive.length) {
throwException(new IllegalStateException("Could not find active fragment "
+ "with index " + f.mIndex));
}
FragmentState fs = fms.mActive[index];
fs.mInstance = f;
f.mSavedViewState = null;
f.mBackStackNesting = 0;