@@ -6,16 +6,7 @@ import {
6
6
DatePickerOptions , TimePickerOptions , PickerOptions
7
7
} from "./datetimepicker.common" ;
8
8
9
- interface DialogClickListener {
10
- new ( datePicker : any , dateTime : Date , callback : Function ) : android . content . DialogInterface . OnClickListener ;
11
- }
12
-
13
- interface DialogDismissListener {
14
- new ( callback : Function ) : android . content . DialogInterface . OnDismissListener ;
15
- }
16
-
17
- let DialogClickListener : DialogClickListener ;
18
- let DialogDismissListener : DialogDismissListener ;
9
+ let DialogListener : any ;
19
10
let AppCompatNamespace : any ;
20
11
declare let global : any ;
21
12
@@ -30,13 +21,14 @@ function initializeAppCompatNamespace(): void {
30
21
}
31
22
}
32
23
33
- function initializeDialogClickListener ( ) : void {
34
- if ( DialogClickListener ) {
24
+ function initializeDialogListener ( ) : void {
25
+ if ( DialogListener ) {
35
26
return ;
36
27
}
37
28
38
- @Interfaces ( [ android . content . DialogInterface . OnClickListener ] )
39
- class DialogClickListenerImpl extends java . lang . Object implements android . content . DialogInterface . OnClickListener {
29
+ @Interfaces ( [ android . content . DialogInterface . OnClickListener , android . content . DialogInterface . OnDismissListener ] )
30
+ class DialogListenerImpl extends java . lang . Object implements android . content . DialogInterface . OnClickListener , android . content . DialogInterface . OnDismissListener {
31
+ private _isClicked = false ;
40
32
constructor ( public nativePicker : any , public dateTime : Date , public callback : Function ) {
41
33
super ( ) ;
42
34
return global . __native ( this ) ;
@@ -46,6 +38,7 @@ function initializeDialogClickListener(): void {
46
38
const callback = this . callback ;
47
39
const dateTime = this . dateTime ;
48
40
const nativePicker = this . nativePicker ;
41
+ this . _isClicked = true ;
49
42
switch ( which ) {
50
43
case android . content . DialogInterface . BUTTON_POSITIVE : {
51
44
if ( nativePicker instanceof android . widget . DatePicker ) {
@@ -63,30 +56,19 @@ function initializeDialogClickListener(): void {
63
56
}
64
57
callback ( null ) ;
65
58
}
66
- }
67
-
68
- DialogClickListener = DialogClickListenerImpl ;
69
- }
70
-
71
- function initializeDialogDismissListener ( ) : void {
72
- if ( DialogDismissListener ) {
73
- return ;
74
- }
75
-
76
- @Interfaces ( [ android . content . DialogInterface . OnDismissListener ] )
77
- class DialogDismissListenerImpl extends java . lang . Object implements android . content . DialogInterface . OnDismissListener {
78
- constructor ( public callback : Function ) {
79
- super ( ) ;
80
- return global . __native ( this ) ;
81
- }
82
59
83
60
onDismiss ( dialog : android . content . DialogInterface ) {
61
+ if ( this . _isClicked ) {
62
+ // The Picker is dismissed due to a button click,
63
+ // so the callback is already called.
64
+ return ;
65
+ }
84
66
const callback = this . callback ;
85
67
callback ( null ) ;
86
68
}
87
69
}
88
70
89
- DialogDismissListener = DialogDismissListenerImpl ;
71
+ DialogListener = DialogListenerImpl ;
90
72
}
91
73
92
74
export class DateTimePickerStyle extends DateTimePickerStyleBase {
@@ -167,8 +149,7 @@ export class DateTimePicker extends DateTimePickerBase {
167
149
}
168
150
169
151
static _createNativeDialog ( nativePicker : android . view . View , options : PickerOptions , value : Date , callback : Function ) : android . app . AlertDialog . Builder {
170
- initializeDialogClickListener ( ) ;
171
- initializeDialogDismissListener ( ) ;
152
+ initializeDialogListener ( ) ;
172
153
initializeAppCompatNamespace ( ) ;
173
154
DateTimePicker . _initializeTextResources ( options . context ) ;
174
155
const context = options . context ;
@@ -179,16 +160,15 @@ export class DateTimePicker extends DateTimePickerBase {
179
160
dateTime = ( nativePicker instanceof android . widget . DatePicker ) ? getDateToday ( ) : getDateNow ( ) ;
180
161
}
181
162
const alertDialog = new android . app . AlertDialog . Builder ( context ) ;
182
- const dialogClickListener = new DialogClickListener ( nativePicker , dateTime , callback ) ;
183
- const dialogDismissListener = new DialogDismissListener ( callback ) ;
163
+ const dialogListener = new DialogListener ( nativePicker , dateTime , callback ) ;
184
164
if ( options . title ) {
185
165
alertDialog . setTitle ( options . title ) ;
186
166
}
187
- alertDialog . setOnDismissListener ( dialogDismissListener ) ;
167
+ alertDialog . setOnDismissListener ( dialogListener ) ;
188
168
const cancelButtonText = options . cancelButtonText ? options . cancelButtonText : this . _defaultCancelText ;
189
169
const okButtonText = options . okButtonText ? options . okButtonText : this . _defaultOkText ;
190
- alertDialog . setNegativeButton ( cancelButtonText , dialogClickListener ) ;
191
- alertDialog . setPositiveButton ( okButtonText , dialogClickListener ) ;
170
+ alertDialog . setNegativeButton ( cancelButtonText , dialogListener ) ;
171
+ alertDialog . setPositiveButton ( okButtonText , dialogListener ) ;
192
172
alertDialog . setView ( nativePicker ) ;
193
173
return alertDialog ;
194
174
}
0 commit comments