Fix TimePicker for Android

This commit is contained in:
Rossen Hristov
2016-12-27 09:15:10 +02:00
parent b93041747d
commit 4069832c3e

View File

@ -20,13 +20,13 @@ class TimeChangedListener extends java.lang.Object implements android.widget.Tim
} }
export class TimePicker extends TimePickerBase { export class TimePicker extends TimePickerBase {
public _timePicker: android.widget.TimePicker; private _android: android.widget.TimePicker;
private _listener: android.widget.TimePicker.OnTimeChangedListener; private _listener: android.widget.TimePicker.OnTimeChangedListener;
public _createUI() { public _createUI() {
this._timePicker = new android.widget.TimePicker(this._context); this._android = new android.widget.TimePicker(this._context);
this._listener = this._listener || new TimeChangedListener(new WeakRef(this)); this._listener = this._listener || new TimeChangedListener(new WeakRef(this));
this._timePicker.setOnTimeChangedListener(this._listener); this._android.setOnTimeChangedListener(this._listener);
let c = java.util.Calendar.getInstance(); let c = java.util.Calendar.getInstance();
if (this.hour === 0) { if (this.hour === 0) {
@ -41,17 +41,21 @@ export class TimePicker extends TimePickerBase {
this._setNativeValueSilently(validTime.hour, validTime.minute); this._setNativeValueSilently(validTime.hour, validTime.minute);
} }
public _setNativeValueSilently(hour: number, minute: number) { get android(): android.widget.TimePicker {
if (this.android) { return this._android;
this.android.setOnTimeChangedListener(null); }
this.android.setCurrentHour(new java.lang.Integer(hour)); public _setNativeValueSilently(hour: number, minute: number) {
this.android.setCurrentMinute(new java.lang.Integer(minute)); if (this._android) {
this._android.setOnTimeChangedListener(null);
this._android.setCurrentHour(new java.lang.Integer(hour));
this._android.setCurrentMinute(new java.lang.Integer(minute));
this.minute = minute; this.minute = minute;
this.hour = hour; this.hour = hour;
this.android.setOnTimeChangedListener(this._listener); this._android.setOnTimeChangedListener(this._listener);
} }
} }
@ -60,7 +64,7 @@ export class TimePicker extends TimePickerBase {
} }
get [timeProperty.native](): Date { get [timeProperty.native](): Date {
let nativeView = this._timePicker; let nativeView = this._android;
return new Date(0, 0, 0, nativeView.getCurrentHour().intValue(), nativeView.getCurrentMinute().intValue()); return new Date(0, 0, 0, nativeView.getCurrentHour().intValue(), nativeView.getCurrentMinute().intValue());
} }
set [timeProperty.native](value: Date) { set [timeProperty.native](value: Date) {
@ -68,14 +72,14 @@ export class TimePicker extends TimePickerBase {
} }
get [minuteProperty.native](): number { get [minuteProperty.native](): number {
return this._timePicker.getCurrentMinute().intValue(); return this._android.getCurrentMinute().intValue();
} }
set [minuteProperty.native](value: number) { set [minuteProperty.native](value: number) {
this._setNativeValueSilently(this.hour, value); this._setNativeValueSilently(this.hour, value);
} }
get [hourProperty.native](): number { get [hourProperty.native](): number {
return this._timePicker.getCurrentHour().intValue() return this._android.getCurrentHour().intValue()
} }
set [hourProperty.native](value: number) { set [hourProperty.native](value: number) {
this._setNativeValueSilently(value, this.minute); this._setNativeValueSilently(value, this.minute);