Кнопка отмены телефонной паузы плагина datepicker

Я использую следующий плагин datePicker:

https://github.com/phonegap/phonegap-plugins/tree/master/Android/DatePicker

Как я могу распознать, когда пользователь нажимает кнопку «Отмена»?:

Изображение контроллера: http://goo.gl/YUzus

Код, который я использую:

window.plugins.datePicker.show({                        
    date : new Date(date),
    mode : 'date',
    allowOldDates : true    
},function(selectedDate) { 
    console.log('SET button was pressed');      
});

Спасибо


person Andres Lopez    schedule 03.01.2013    source источник


Ответы (1)


Мне удалось отменить событие, немного изменив плагин .java: после кода

public void run() {
final DateSetListener dateSetListener = new DateSetListener(datePickerPlugin, callBackId);
final DatePickerDialog dateDialog = new DatePickerDialog(currentCtx, dateSetListener, mYear,mMonth, mDay);

Я добавил событие, чтобы перехватить отмену:

dateDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() 
{
    public void onClick(DialogInterface dialog, int which) 
{
    if (which == DialogInterface.BUTTON_NEGATIVE) {
    datePickerPlugin.success(new PluginResult(PluginResult.Status.NO_RESULT, ""), callBackId);}}});

Это установит дату на "" при нажатии кнопки отмены. В коде javascript мне удалось изменить событие фокуса на событие касания следующим образом (я использую плагин на мобильном телефоне, у которого есть события TAP:

 $('.nativedatepicker').bind('tap',function(event) {
            var currentField = $(this);

            console.log(currentField.val());
            var myNewDate = Date.parse(currentField.val()) || new Date();

            if(typeof myNewDate === "number"){ myNewDate = new Date (myNewDate); }
            //myNewDate = currentField.val();

            console.log("inside native date picker " + event);

            // Same handling for iPhone and Android
            window.plugins.datePicker.show({
                date : myNewDate,
                mode : 'date', // date or time or blank for both
                allowOldDates : true
            }, function(returnDate) {
                console.log("ret date" + returnDate);
                if (returnDate)
                    {
                        var newDate = new Date(returnDate);
                        currentField.val(returnDate);

                        // This fixes the problem you mention at the bottom of this script with it not working a second/third time around, because it is in focus.
                        currentField.blur();
                    }
            });
        });

надеюсь смогу помочь.

person Andrea Gallucci    schedule 13.04.2013
comment
Мне пришлось добавить import android.content.DialogInterface; также в начало файла - person Nathan; 12.02.2014
comment
и использовал callbackContext.success(); вместо datePickerPlugin.success - person Nathan; 12.02.2014