2016-01-29 3 views
-1

Я хочу, чтобы DatePickerDialog не показывал даты до текущей даты. Я использую метод setMinDate(long l). Но это не работает.getDatePicker(). SetMinDate of DatePickerDialog не работает

Я использую внутренний класс, где я установить MinDate:

public static class DatePickerFragment extends DialogFragment 
     implements DatePickerDialog.OnDateSetListener { 
    DatePickerDialog datePickerDialog; 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
     int hour = c.get(Calendar.HOUR_OF_DAY); 
     int minute = c.get(Calendar.MINUTE); 

     String s = month + day + year+""; 
     datePickerDialog = new DatePickerDialog(getActivity(),this,year,month,day); 
     datePickerDialog.getDatePicker().setMinDate(Long.parseLong(s)); 

     // Create a new instance of DatePickerDialog and return it 
      return datePickerDialog; 
    } 

    public void onDateSet(DatePicker view, int year, int month, int day) { 
     SelectedDateView.setText(day+ (month + 1) + "-" + "-" + year); 

    } 
} 

Это метод, который показывает, что:

public void showDatePickerDialog(View v) { 
    DialogFragment newFragment = new DatePickerFragment(); 
    newFragment.show(getActivity().getSupportFragmentManager(), "datePicker"); 
} 
+0

'Long.parseLong (s)', что вы думаете, это делает? – njzk2

+0

@ njzk2 преобразует строку в длинную? – Abhi

+0

да, но какая строка, на какую дату? что ожидает 'setMinDate'? – njzk2

ответ

1

setMinDate() ожидает unix time (миллисекунды с 1 января 1970 года 00:00:00). Попробуйте примерно следующее:

long currentTime = new Date().getTime(); 
datePickerDialog.getDatePicker().setMinDate(currentTime); 

Надеюсь, что это поможет.

+1

в качестве примечания, время unix обычно находится в секундах. java использует миллисекунды, потому что почему бы и нет. – njzk2

+1

Привет .. Я пробовал это, но в lollipop datepicker появляется как календарь с датами до сегодняшнего дня, которые выглядят отключенными, но по-прежнему выбираемыми. При выборе даты я устанавливаю ее в «TextView». Я могу установить даты до сегодняшнего дня, даже если он выглядит отключенным. – Abhi

+0

Это похоже на ошибку в Android Lollipop. Проверьте, действительно ли выбранная дата действительна в вашем методе 'onDateSet', и только установите ее в своем текстовом виде, если она есть. – simon

0

Попробуйте это:

long time= System.currentTimeMillis(); 
datePickerDialog.getDatePicker().setMinDate(time); 
+0

Привет. Я пробовал это, но в леденец датапикер появляется как календарь с датами до сегодняшнего дня, которые выглядят отключенными, но по-прежнему выбираемыми. При выборе даты я устанавливаю ее в TextView. Я могу установить даты до сегодняшнего дня, даже если он выглядит отключенным – Abhi

0

Для sdks старше 23 лет вам придется использовать «System.currentTimeMillis()» вместо «cal.getTimeInMillis()».

sdk < 23: datePickerStart.getDatePicker().setMinDate(System.currentTimeMillis())
sdk > 23: datePickerStart.getDatePicker().setMinDate(cal.getTimeInMillis())

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

  • Нет связанных вопросов^_^