From 467cc6f0e1703a961e76f763aef70185c6019405 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Wed, 11 May 2016 13:45:33 -0700 Subject: [PATCH] Less lazy child FragmentManager creation Framework edition Fix a bug where child FragmentManagers moving too lazily into the CREATED state and beyond caused child fragments to not be attached/created when expected. Bug 25019275 Change-Id: I04ff0d3bcb693178a6ee3057da591392defdbcf8 --- core/java/android/app/Fragment.java | 4 ++++ core/java/android/app/FragmentManager.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java index f4fe1eb1cc6ee..7ef6d414ed84d 100644 --- a/core/java/android/app/Fragment.java +++ b/core/java/android/app/Fragment.java @@ -1486,6 +1486,10 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene final int version = context != null ? context.getApplicationInfo().targetSdkVersion : 0; if (version >= Build.VERSION_CODES.N) { restoreChildFragmentState(savedInstanceState, true); + if (mChildFragmentManager != null + && !mChildFragmentManager.isStateAtLeast(Fragment.CREATED)) { + mChildFragmentManager.dispatchCreate(); + } } } diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index d79538558b9a8..13b271681cf86 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -870,6 +870,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } + boolean isStateAtLeast(int state) { + return mCurState >= state; + } + void moveToState(Fragment f, int newState, int transit, int transitionStyle, boolean keepActive) { if (DEBUG && false) Log.v(TAG, "moveToState: " + f