Do not send onTimeChanged updates if nothing actually changed.

Bug: 29314380
Test: android.widget.cts.TimePickerTest#testSetOnTimeChangedListener now passes.
Change-Id: I4df96cd306967027ea76e2c256b50ca687eae9ba
This commit is contained in:
Aurimas Liutikas
2017-02-28 12:16:57 -08:00
parent c515d6b776
commit 2f16bc8a3a

View File

@@ -813,8 +813,12 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate {
private final OnValueSelectedListener mOnValueSelectedListener = new OnValueSelectedListener() {
@Override
public void onValueSelected(int pickerType, int newValue, boolean autoAdvance) {
boolean valueChanged = false;
switch (pickerType) {
case RadialTimePickerView.HOURS:
if (getHour() != newValue) {
valueChanged = true;
}
final boolean isTransition = mAllowAutoAdvance && autoAdvance;
setHourInternal(newValue, FROM_RADIAL_PICKER, !isTransition);
if (isTransition) {
@@ -825,11 +829,14 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate {
}
break;
case RadialTimePickerView.MINUTES:
if (getMinute() != newValue) {
valueChanged = true;
}
setMinuteInternal(newValue, FROM_RADIAL_PICKER);
break;
}
if (mOnTimeChangedListener != null) {
if (mOnTimeChangedListener != null && valueChanged) {
mOnTimeChangedListener.onTimeChanged(mDelegator, getHour(), getMinute());
}
}