diff --git a/core/java/com/android/internal/widget/ViewPager.java b/core/java/com/android/internal/widget/ViewPager.java index e4bb0cffd6afc..46349152d75c7 100644 --- a/core/java/com/android/internal/widget/ViewPager.java +++ b/core/java/com/android/internal/widget/ViewPager.java @@ -1255,7 +1255,7 @@ public class ViewPager extends ViewGroup { }; SavedState(Parcel in, ClassLoader loader) { - super(in, loader); + super(loadParcelable(in, loader)); if (loader == null) { loader = getClass().getClassLoader(); } @@ -1263,6 +1263,16 @@ public class ViewPager extends ViewGroup { adapterState = in.readParcelable(loader); this.loader = loader; } + + /** + * Substitute for AbsSavedState two-arg constructor, which was added in + * SDK 24. Loads the super state from a given class loader or returns + * the empty state if null. + */ + private static Parcelable loadParcelable(Parcel in, ClassLoader loader) { + Parcelable superState = in.readParcelable(loader); + return superState != null ? superState : AbsSavedState.EMPTY_STATE; + } } @Override