2011-01-07 4 views

Répondre

7

Je suppose que vous utilisez DatePickerDialog et OnDateSetListener que vous devez passer au constructeur ne correspond pas à vos besoins parce que vous devez jeter l'erreur avant la date est effectivement fixé.

Dans ce cas vous pouvez étendre DatePickerDialog et faire votre propre implémentation de OnDateChanged, qui est appelée chaque fois que la date change et vous obtenez comme paramètres le DatePicker, et les nouvelles valeurs de l'année, du mois et du jour, ainsi vous pouvez vérifier cette date est passée et dans ce cas, lancez l'erreur (avec un Toast ou autre) et appelez DatePicker.updateDate() pour définir une valeur correcte (afin que DatePicker soit toujours dans un état cohérent).

En outre, vous pouvez appeler à DatePicker.init(year, monthOfYear, dayOfMonth, onDateChangedListener); alors vous pouvez passer une mise en œuvre onDateChangedListener sans avoir à étendre DatePickerDialog

1

Vous pouvez vérifier la date manuellement .. et à restreindre l'utilisateur d'entrer la date invalide:

extrait de vérification de code suivant :

 if((futureDate.getDate() == currentDate1.getDate() && futureDate.getMonth()== currentDate1.getMonth() && futureDate.getYear() == currentDate1.getYear())) 
       { 
        if(futureDate.after(currentDate1)) 
        { 
            // Accept Date 
        } 
        else 
        { 
            // Alert user Date is Invalid 
        } 

       } 
       else 
       { 
         // Alert user Date is Invalid 
       } 
0

Si vous utilisez l'API 11 ou plus, utilisez la méthode setMinDate() sur DatePicker. Cela masque toutes les dates avant la date spécifiée.

0

Espérons que cela aidera.

public void openDateDialog (Voir la vue) { final Calendrier c = Calendar.getInstance(); final int dayOfMonth = c.get (Calendar.DAY_OF_MONTH); final int monthOfYear = c.get (Calendar.MONTH); final int année = c.get (Calendar.YEAR);

new MyDatePickerDialog(view.getContext(), null, year, monthOfYear, dayOfMonth).show();; 

}

class MyDatePickerDialog extends DatePickerDialog { 


     public MyDatePickerDialog(Context context, OnDateSetListener callBack, 
       int year, int monthOfYear, int dayOfMonth) { 
      super(context, callBack, year, monthOfYear, dayOfMonth); 
      this.context = context; 
     } 


     private Context context; 



     @Override 
     public void onDateChanged(DatePicker view, int year, int month, int day) { 
      // TODO Auto-generated method stub 
      super.onDateChanged(view, year, month, day); 
       Calendar dareSelected = Calendar.getInstance(); 
       dareSelected.set(year, month, day); 
       Calendar currentDate = Calendar.getInstance(); 

       int a = dareSelected.compareTo(currentDate); 
       if(a<0){ 
        Toast.makeText(context, "Invalid Date", Toast.LENGTH_SHORT).show(); 
       }else{ 
        setDate(year,month,day); 
       } 
     } 
    } 

    private void setDate(int year, int monthOfYear, int dayOfMonth){ 
     tvText.setText(new StringBuilder().append(pad(dayOfMonth)) 
       .append("-").append(pad(monthOfYear + 1)).append("-") 
       .append(pad(year))); 

    } 

    private static String pad(int c) { 
     if (c >= 10) 
      return String.valueOf(c); 
     else 
      return "0" + String.valueOf(c); 
    } 
Questions connexes