diff options
| author | Alan Viverette <alanv@google.com> | 2016-04-01 18:22:19 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-04-01 18:22:20 +0000 |
| commit | 228137fa269b7e71205174f9d0d9ce91d9a1abfc (patch) | |
| tree | eb59c527e79ad2ce72944e67b04760dc8e9333a1 /core/java/android | |
| parent | 32e537c610b66ca975e6d9e4cf5dadb4a7cb62d3 (diff) | |
| parent | a9a75f506efe7e63078bed661f49992e501846f0 (diff) | |
Merge "Refactor DatePickerDialog constructors to avoid early callback" into nyc-dev
Diffstat (limited to 'core/java/android')
4 files changed, 35 insertions, 29 deletions
diff --git a/core/java/android/app/DatePickerDialog.java b/core/java/android/app/DatePickerDialog.java index 83dc506371cf..bd55a06c40f5 100644 --- a/core/java/android/app/DatePickerDialog.java +++ b/core/java/android/app/DatePickerDialog.java @@ -58,7 +58,7 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, * @param context the parent context */ public DatePickerDialog(@NonNull Context context) { - this(context, 0); + this(context, 0, null, Calendar.getInstance(), -1, -1, -1); } /** @@ -70,24 +70,7 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, * {@code context}'s default alert dialog theme */ public DatePickerDialog(@NonNull Context context, @StyleRes int themeResId) { - super(context, resolveDialogTheme(context, themeResId)); - - final Context themeContext = getContext(); - final LayoutInflater inflater = LayoutInflater.from(themeContext); - final View view = inflater.inflate(R.layout.date_picker_dialog, null); - setView(view); - - setButton(BUTTON_POSITIVE, themeContext.getString(R.string.ok), this); - setButton(BUTTON_NEGATIVE, themeContext.getString(R.string.cancel), this); - setButtonPanelLayoutHint(LAYOUT_HINT_SIDE); - - final Calendar calendar = Calendar.getInstance(); - final int year = calendar.get(Calendar.YEAR); - final int monthOfYear = calendar.get(Calendar.MONTH); - final int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); - mDatePicker = (DatePicker) view.findViewById(R.id.datePicker); - mDatePicker.init(year, monthOfYear, dayOfMonth, this); - mDatePicker.setValidationCallback(mValidationCallback); + this(context, themeResId, null, Calendar.getInstance(), -1, -1, -1); } /** @@ -104,7 +87,7 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, */ public DatePickerDialog(@NonNull Context context, @Nullable OnDateSetListener listener, int year, int month, int dayOfMonth) { - this(context, 0, listener, year, month, dayOfMonth); + this(context, 0, listener, null, year, month, dayOfMonth); } /** @@ -116,16 +99,40 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, * {@code context}'s default alert dialog theme * @param listener the listener to call when the user sets the date * @param year the initially selected year - * @param month the initially selected month (0-11 for compatibility with - * {@link Calendar#MONTH}) + * @param monthOfYear the initially selected month of the year (0-11 for + * compatibility with {@link Calendar#MONTH}) * @param dayOfMonth the initially selected day of month (1-31, depending * on month) */ public DatePickerDialog(@NonNull Context context, @StyleRes int themeResId, - @Nullable OnDateSetListener listener, int year, int month, int dayOfMonth) { - this(context, themeResId); + @Nullable OnDateSetListener listener, int year, int monthOfYear, int dayOfMonth) { + this(context, themeResId, listener, null, year, monthOfYear, dayOfMonth); + } + + private DatePickerDialog(@NonNull Context context, @StyleRes int themeResId, + @Nullable OnDateSetListener listener, @Nullable Calendar calendar, int year, + int monthOfYear, int dayOfMonth) { + super(context, resolveDialogTheme(context, themeResId)); + + final Context themeContext = getContext(); + final LayoutInflater inflater = LayoutInflater.from(themeContext); + final View view = inflater.inflate(R.layout.date_picker_dialog, null); + setView(view); + + setButton(BUTTON_POSITIVE, themeContext.getString(R.string.ok), this); + setButton(BUTTON_NEGATIVE, themeContext.getString(R.string.cancel), this); + setButtonPanelLayoutHint(LAYOUT_HINT_SIDE); + + if (calendar != null) { + year = calendar.get(Calendar.YEAR); + monthOfYear = calendar.get(Calendar.MONTH); + dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); + } + + mDatePicker = (DatePicker) view.findViewById(R.id.datePicker); + mDatePicker.init(year, monthOfYear, dayOfMonth, this); + mDatePicker.setValidationCallback(mValidationCallback); - mDatePicker.updateDate(year, month, dayOfMonth); mDateSetListener = listener; } diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java index 6e3dbd8c5e1d..e3357a7738f2 100644 --- a/core/java/android/widget/DatePicker.java +++ b/core/java/android/widget/DatePicker.java @@ -75,8 +75,6 @@ import java.util.TimeZone; */ @Widget public class DatePicker extends FrameLayout { - private static final String LOG_TAG = DatePicker.class.getSimpleName(); - private static final int MODE_SPINNER = 1; private static final int MODE_CALENDAR = 2; diff --git a/core/java/android/widget/DatePickerCalendarDelegate.java b/core/java/android/widget/DatePickerCalendarDelegate.java index 5adac0195701..332e89cc9653 100755 --- a/core/java/android/widget/DatePickerCalendarDelegate.java +++ b/core/java/android/widget/DatePickerCalendarDelegate.java @@ -378,9 +378,9 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate { mCurrentDate.set(Calendar.MONTH, monthOfYear); mCurrentDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); - mDateChangedListener = callBack; - onDateChanged(false, false); + + mDateChangedListener = callBack; } @Override diff --git a/core/java/android/widget/DatePickerSpinnerDelegate.java b/core/java/android/widget/DatePickerSpinnerDelegate.java index 255de79dbf32..d8a3c5638b72 100644 --- a/core/java/android/widget/DatePickerSpinnerDelegate.java +++ b/core/java/android/widget/DatePickerSpinnerDelegate.java @@ -244,6 +244,7 @@ class DatePickerSpinnerDelegate extends AbstractDatePickerDelegate { setDate(year, monthOfYear, dayOfMonth); updateSpinners(); updateCalendarView(); + mOnDateChangedListener = onDateChangedListener; } |
