2013-06-17 3 views
0

Я использую диалоговое окно datepicker в своем приложении. Я не хочу выбирать прошедшие даты, когда пользователь выбирает любую дату из диалогового окна. Мой код здесь.Диалоговое окно Datepicker не должно выбираться прошлой датой

private DatePickerDialog.OnDateSetListener mdateSetListener = new DatePickerDialog.OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker view, int yr, int monthOfYear, 
      int dayOfMonth) { 
     year = yr; 
     month = monthOfYear; 
     day = dayOfMonth; 
     updateDate(); 
    } 
}; 

Дата обновления задает выбранную дату в EditText. Есть ли какой-либо метод библиотеки для предотвращения выбора прошлых дат?

Заранее спасибо

+0

вы всегда можете поставить, если на кнопке, заставляя человека снова ввести действительное значение – wazaminator

+0

@ wazaminator Но как проверить действительную дату. –

+1

http://stackoverflow.com/questions/9494334/how-to-not-allow-user-select-past-date-in-datepicker – karthi

ответ

2

В способе обновления ваше состояние было бы .Date класс есть раньше, равно и после methods.Use им.

if(userdate.before(today) || userdate.equals(today)){ 
    //past date found 
} 
+0

, работая над вашей концепцией. ЕСЛИ работал, а затем ждать принятия. Спасибо :) –

+0

@VarunVishnoi: Badshah дал правильный способ решить вашу проблему. Я поставил здесь рабочий код, который вы можете использовать. –

1

Вы можете использовать: getDatePicker().setMaxDate(). Переопределите onCreate() диалога и примените к нему ограничения.

0

Если ваше приложение должно работать на API LEVEL 8+, то используйте ниже для этого. введите соответствующий код внутри метода onDateSet.

@Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
String selected_date = dayOf + "-" + monthOf + "-" + year; 

      Log.i(TAG, "Selected Date" + selected_date); 
      SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
      Date strDate = null; 
      try { 
       strDate = sdf.parse(selected_date); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      Calendar c = Calendar.getInstance(); 
      System.out.println("Current time => " + c.getTime()); 

      Date current_date = null; 
      String formattedDate = sdf.format(c.getTime()); 
      try { 
       current_date = sdf.parse(formattedDate); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 


      if (current_date.after(strDate)) { 
       Toast.makeText(getApplicationContext(), 
         "Please choose future date", 1).show(); 
      } else { 

       mYear = String.valueOf(year); 
       mMonth = String.valueOf(monthOfYear); 
       mDay = String.valueOf(dayOfMonth); 
       updateStartDate(); 

      } 
     } 

, если ваше приложение требует, чтобы работать на API LEVEL 11+ затем использовать DatePicker.setMinDate(long) вы можете найти более подробную информацию HERE

+0

не работает bcz Выбранные даты17-5-2013 и текущее время => Пн Июн 17 13:21:54 IST 2013 ... Эти не могут сравниться. –

+0

@VarunVishnoi: Кажется, вы не пробовали мой код. Я преобразовал текущую дату в тот же формат, что и выбранная дата, прежде чем сравнивать ее. вы должны снова посмотреть код и попытаться запустить один раз в своем проекте. –

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