From d015e3454ec1271ba6e5e3e6f0e5f7459b8b09ea Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Mon, 15 Sep 2014 19:27:55 -0700 Subject: [PATCH] Properly handle dispatchRestoreInstanceState for new-style DatePicker Fixes reversed day/month/year in restore instance state. BUG: 17514055 Change-Id: Id839f2f0dbca47034dc84100dbeb1c32e8848178 --- core/java/android/widget/DatePicker.java | 11 ++--------- .../android/widget/DatePickerCalendarDelegate.java | 7 +------ 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java index d77f0b2b6e8c0..3e4eb021b5655 100644 --- a/core/java/android/widget/DatePicker.java +++ b/core/java/android/widget/DatePicker.java @@ -392,10 +392,9 @@ public class DatePicker extends FrameLayout { mDelegate.setSpinnersShown(shown); } - // Override so we are in complete control of save / restore for this widget. @Override protected void dispatchRestoreInstanceState(SparseArray container) { - mDelegate.dispatchRestoreInstanceState(container); + dispatchThawSelfOnly(container); } @Override @@ -406,7 +405,7 @@ public class DatePicker extends FrameLayout { @Override protected void onRestoreInstanceState(Parcelable state) { - SavedState ss = (SavedState) state; + BaseSavedState ss = (BaseSavedState) state; super.onRestoreInstanceState(ss.getSuperState()); mDelegate.onRestoreInstanceState(ss); } @@ -452,7 +451,6 @@ public class DatePicker extends FrameLayout { void onConfigurationChanged(Configuration newConfig); - void dispatchRestoreInstanceState(SparseArray container); Parcelable onSaveInstanceState(Parcelable superState); void onRestoreInstanceState(Parcelable state); @@ -847,11 +845,6 @@ public class DatePicker extends FrameLayout { setCurrentLocale(newConfig.locale); } - @Override - public void dispatchRestoreInstanceState(SparseArray container) { - mDelegator.dispatchThawSelfOnly(container); - } - @Override public Parcelable onSaveInstanceState(Parcelable superState) { return new SavedState(superState, getYear(), getMonth(), getDayOfMonth()); diff --git a/core/java/android/widget/DatePickerCalendarDelegate.java b/core/java/android/widget/DatePickerCalendarDelegate.java index b962962118cb9..e71b38366baa6 100644 --- a/core/java/android/widget/DatePickerCalendarDelegate.java +++ b/core/java/android/widget/DatePickerCalendarDelegate.java @@ -528,11 +528,6 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate i mDayFormat = new SimpleDateFormat("d", newConfig.locale); } - @Override - public void dispatchRestoreInstanceState(SparseArray container) { - // Nothing to do - } - @Override public Parcelable onSaveInstanceState(Parcelable superState) { final int year = mCurrentDate.get(Calendar.YEAR); @@ -557,7 +552,7 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate i public void onRestoreInstanceState(Parcelable state) { SavedState ss = (SavedState) state; - mCurrentDate.set(ss.getSelectedDay(), ss.getSelectedMonth(), ss.getSelectedYear()); + mCurrentDate.set(ss.getSelectedYear(), ss.getSelectedMonth(), ss.getSelectedDay()); mCurrentView = ss.getCurrentView(); mMinDate.setTimeInMillis(ss.getMinDate()); mMaxDate.setTimeInMillis(ss.getMaxDate());