2011-02-09 17 views
7

Estoy usando DatePicket en mi actividad,Android DatePicker Fecha límite

Quiero limitar la fecha elegida por el usuario a la fecha de hoy.

No deberían poder seleccionar una fecha anterior a la fecha de hoy.

gracias.

Respuesta

7

sí se puede hacerlo muy easely la validación aquí es el exemple:

if(dateObj1.before(dateObj2) || dateObj1.equals(dateObj2)){ 
//the program runs normally 
} 
else{ 
       new AlertDialog.Builder(PM_Edit.this) 

       .setTitle("Wrong Data Input!") 

       .setMessage("The end Date must be Before the start Date, please insert new Date values") 

       .setNeutralButton("Ok", 

       new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, 

       int which) { 

       } 

       }).show(); 
      } 

Créditos a: http://www.brighthub.com/mobile/google-android/articles/41545.aspx

3

No he trabajado con DatePicker pero la documentación no muestra ningún método que pueda restringir la fecha máxima que muestra Picker, pero siempre puede verificar la fecha de regreso y notificar al usuario sobre el criterio de validación.

+0

bien tio que trato de hacer la validación manual. –

0

Estoy de acuerdo con Sheikh.

Tal posibilidad de adherirse a la validación de la fecha introducida y si no válida, notificar al usuario y poner en marcha el nuevo DatePicker.

Aparte de eso, tal vez un widget personalizado, pero no he visto una forma predeterminada de hacerlo.

5
DatePicker datePicker = (DatePicker)findViewById(R.id.new_date_picker); 


datePicker.init(year, month, day, new OnDateChangedListener() { 

    @Override 
    public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) { 

     if(isDateAfter(view)){ 
      Calendar mCalendar = Calendar.getInstance(); 
      view.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this); 
     } 
    } 


    private boolean isDateAfter(DatePicker tempView) { 
     Calendar mCalendar = Calendar.getInstance(); 
     Calendar tempCalendar = Calendar.getInstance(); 
     tempCalendar.set(tempView.getYear(), tempView.getMonth(), tempView.getDayOfMonth(), 0, 0, 0); 
     if(tempCalendar.after(mCalendar)) 
      return true; 
     else 
      return false; 
    } 
}); 
Cuestiones relacionadas