From 74af07647d7f00d9f40b77dc4067742d309b8cd6 Mon Sep 17 00:00:00 2001 From: George Mount Date: Tue, 4 Apr 2017 17:25:15 -0700 Subject: [PATCH] Call noteStateNotSaved on child fragment managers. Bug 36740474 When onNewIntent() is called, it calls noteStateNotSaved on the FragmentManager. It wasn't propagating that to child FragmentManagers. This CL properly propagates the noteStateNotSaved(). Test: I7cf360a4ed82ee34797896dc110477731c8206c0 Change-Id: Icfcbc385ef68657145b05cb59d5b2a70fe020992 --- core/java/android/app/Fragment.java | 6 ++++++ core/java/android/app/FragmentManager.java | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java index 3102a93790b24..a3c123f74cc47 100644 --- a/core/java/android/app/Fragment.java +++ b/core/java/android/app/Fragment.java @@ -2608,6 +2608,12 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene } } + void noteStateNotSaved() { + if (mChildFragmentManager != null) { + mChildFragmentManager.noteStateNotSaved(); + } + } + @Deprecated void performMultiWindowModeChanged(boolean isInMultiWindowMode) { onMultiWindowModeChanged(isInMultiWindowMode); diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index 399987fe1c417..3107453b9023b 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -2893,8 +2893,15 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public void noteStateNotSaved() { mStateSaved = false; + final int addedCount = mAdded == null ? 0 : mAdded.size(); + for (int i = 0; i < addedCount; i++) { + Fragment fragment = mAdded.get(i); + if (fragment != null) { + fragment.noteStateNotSaved(); + } + } } - + public void dispatchCreate() { mStateSaved = false; dispatchMoveToState(Fragment.CREATED);