Znalazłem DatePicker (okno dialogowe) bardzo mylące ... Po ustawieniu setMinDate() ... pokazany kalendarz naprawdę "wizualnie wyłącza" przekazane daty (niech będą szare), ale te daty są nadal dostępne do wyboru! Chcę, aby użytkownik tego nie robił. Idealny sposób sprawiłby, że zaliczone daty były nieklikalne/nie można było wybrać. Jeśli nie jest to możliwe, należy przynajmniej złapać to zdarzenie (które jedno? OnDateChanged ?, onSelected? ...) i wznieść toast za wiadomość i wyłączyć przycisk OK, dopóki użytkownik nie wybierze prawidłowej daty.Jak zapobiec wybraniu daty daty w DatePickerDialog (setMinDate nie działa zgodnie z oczekiwaniami)
Niestety, datepicker (dialog) nie ma onChangedListener (w rzeczywistości ma on tylko nie ustawiania dla niego). Jedyne wydarzenie, jakie otrzymuję, to naciśnięcie przycisku OK. Jest za późno.
Oto mój kod
dateTextView = (TextView) view.findViewById(R.id.createOrder_date);
dateTextView.setText(R.string.createOrder_time_now);
dateTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar calendarNow = Calendar.getInstance();
final int yearNow = calendarNow.get(Calendar.YEAR);
final int monthNow = calendarNow.get(Calendar.MONTH);
final int dayNow = calendarNow.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(CreateOrderFragment.this.getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
if (calendar.before(calendarNow)) {
Toast.makeText(CreateOrderFragment.this.getActivity(), getResources().getString(R.string.createOrder_datePicker_selectFutureDate), Toast.LENGTH_SHORT).show();
view.updateDate(yearNow, monthNow, dayNow);
calendar = calendarNow;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
dateTextView.setText(sdf.format(calendar.getTime()));
}
}, yearNow, monthNow, dayNow);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
datePickerDialog.setTitle(getResources().getString(R.string.createOrder_datePicker_title));
datePickerDialog.show();
}
});
'SimpleDateFormat SDF = nowy SimpleDateFormat ("dd/mm/rok");' \t \t 'Data minDate = NULL;' \t \t 'próby {' \t \t \t 'minDate = sdf.parse (" 01/01/2014"); ' \t \t'} zaczep (ParseException e) { ' \t \t \t' w.printStackTrace(); ' \t \t \t' powrotu; ' \t' \t} ' ::: Zrobiłem to, używając tego. ** UWAGA: ** Dotyczy API poziomu 9 i powyżej –
Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? – jlindenbaum
Niestety nie. – Wooff