2013-08-23 2 views
3

По какой-то странной причине, когда я нажимаю на кнопку положительной в рамках DatePickerDialog, метод onDateSet как часть DateSetListener не получает вызова ТОЛЬКО НА SAMSUNG УСТРОЙСТВ ,DatePickerDialog.OnDateSetListener не получает обратный вызов на устройствах Samsung

Вот что я делаю:

DateSetListener _datePickerDialogCallback = new DateSetListener(); 

DatePickerDialog _datePickerDialog = new DatePickerDialog(context, _datePickerDialogCallback, year, month, days); 
_datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, StringUtil.getString(R.string.command_ok), new DialogInterface.OnClickListener() { 

    public void onClick(DialogInterface arg0, int arg1) { 
     _done = true; 
    } 

    }); 

_datePickerDialog.show(); 



private class DateSetListener implements DatePickerDialog.OnDateSetListener { 

    public void onDateSet(DatePicker view, int year, int month, int day) { 

    Calendar calendar = Calendar.getInstance(); 
    calendar.set(year, month, day, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), 
     calendar.get(Calendar.SECOND)); 

    if (_done) { 
     _view.setText(formatDate(calendar.getTime())); 
    } 
    } 
} 

Любые предложения о том, почему это может происходить будут оценены. пожалуйста. отметить, что это только на SAMSUNG УСТРОЙСТВА

+0

Вы используете персонализированный выбор даты? – Hariharan

+0

Я использую ** DatePickerDialog ** с ** OnDateSetListener **, и он работает без проблем на моем Samsung Galaxy S2 (4.1.2). Какую версию Android вы используете? – David

+0

проверить этот http://stackoverflow.com/questions/18211684/how-to-transfer-the-formatted-date-string-from-my-datepickerfragment/18212061#18212061 первый метод в ссылке протестирован на галактике sssun s3 – Raghunandan

ответ

6

Похоже, от ICS и выше, обратный вызов не должен быть определен при определении datePickerDialog. Но, onPositiveButtonClick и onNegativeButtonClick должны были бы вызвать обратный вызов. что-то вроде:

_datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Ok", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface arg0, int arg1) { 
     _done = true; 
     DatePicker datePicker = _datePickerDialog.getDatePicker(); 
     _datePickerDialogCallback.onDateSet(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth()); 
     } 

    }); 
+0

Благодарим вас за отличную документацию. –

2

Я не уверен, что случилось с вашим кодом, но это, как я сделал это, и она работает на моем SG2 (я не делал setButton вещь)

Мои OnDataSetListener реализован как внутренний класс:

class DatePickHandler implements OnDateSetListener { 
    @Override 
    public void onDateSet(DatePicker view, int year, 
     int monthOfYear, int dayOfMonth) { 
     //do stuff 
     mDateDialog.hide(); 
    } 
} 

создание моего DatePickerDialog во фрагменте моего приложения

mDateDialog = new DatePickerDialog(getActivity(), 
    new DatePickHandler(), mYear, mMonth, mDay); 

Чем я открыть диалог внутри OnClick() методом onClickListener()

mDateDialog.show(); 

редактировать 26.08.13 \

Я добавил следующее

mDateDialog.setButton(DialogInterface.BUTTON_POSITIVE, "test text", new 
    DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     Log.i("test", "in onclick"); 
}); 

Вот как это выглядит сейчас. После того, как я нажму кнопку «тестовый текст», будет вызван мой недавно созданный метод onClick.

enter image description here

+0

Эй, Дэвид. так много для вашего ответа. Он работает с setButton с OnClickListener как часть этого? – lokoko

+0

Я добавил его к моему ответу выше. Короткая версия: Да, работает без проблем;) – David

+0

Вызов onClick() отлично, но вызывает ли ваш обратный вызов OnDateSetListener? – lokoko

Смежные вопросы