summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/Fragment.java38
1 files changed, 31 insertions, 7 deletions
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java
index e163b1c2ad23..20eaf0b8dca4 100644
--- a/core/java/android/app/Fragment.java
+++ b/core/java/android/app/Fragment.java
@@ -26,6 +26,7 @@ import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
+import android.os.Build;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -1416,11 +1417,30 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene
* at this point. If you want to do work once the activity itself is
* created, see {@link #onActivityCreated(Bundle)}.
*
+ * <p>If your app's <code>targetSdkVersion</code> is 23 or lower, child fragments
+ * being restored from the savedInstanceState are restored after <code>onCreate</code>
+ * returns. When targeting N or above and running on an N or newer platform version
+ * they are restored by <code>Fragment.onCreate</code>.</p>
+ *
* @param savedInstanceState If the fragment is being re-created from
* a previous saved state, this is the state.
*/
public void onCreate(@Nullable Bundle savedInstanceState) {
mCalled = true;
+ final Context context = getContext();
+ final int version = context != null ? context.getApplicationInfo().targetSdkVersion : 0;
+ if (version >= Build.VERSION_CODES.N) {
+ if (savedInstanceState != null) {
+ Parcelable p = savedInstanceState.getParcelable(Activity.FRAGMENTS_TAG);
+ if (p != null) {
+ if (mChildFragmentManager == null) {
+ instantiateChildFragmentManager();
+ }
+ mChildFragmentManager.restoreAllState(p, null);
+ mChildFragmentManager.dispatchCreate();
+ }
+ }
+ }
}
/**
@@ -2210,14 +2230,18 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene
throw new SuperNotCalledException("Fragment " + this
+ " did not call through to super.onCreate()");
}
- if (savedInstanceState != null) {
- Parcelable p = savedInstanceState.getParcelable(Activity.FRAGMENTS_TAG);
- if (p != null) {
- if (mChildFragmentManager == null) {
- instantiateChildFragmentManager();
+ final Context context = getContext();
+ final int version = context != null ? context.getApplicationInfo().targetSdkVersion : 0;
+ if (version < Build.VERSION_CODES.N) {
+ if (savedInstanceState != null) {
+ Parcelable p = savedInstanceState.getParcelable(Activity.FRAGMENTS_TAG);
+ if (p != null) {
+ if (mChildFragmentManager == null) {
+ instantiateChildFragmentManager();
+ }
+ mChildFragmentManager.restoreAllState(p, null);
+ mChildFragmentManager.dispatchCreate();
}
- mChildFragmentManager.restoreAllState(p, null);
- mChildFragmentManager.dispatchCreate();
}
}
}