J'utilise DatePicker dans mon activité, P>
Je veux limiter la date cueillie par l'utilisateur à la date d'aujourd'hui. P>
Ils ne doivent pas ne pas pouvoir sélectionner la date supérieure à la date d'aujourd'hui. p>
merci. p>
4 Réponses :
Je n'ai pas travaillé avec DatePicker, mais la documentation ne montre aucune méthode qui peut limiter la date maximale des affichages du sélecteur, vous pouvez toujours toujours vérifier la date à laquelle il renvoie et peut notifier à l'utilisateur le critère de validation. p>
Je suis d'accord avec Sheikh. p>
Peut-être envisagez de faire la validation à la date entrée et, si invalide, informez-en l'utilisateur et lancez à nouveau le DatePicker. p>
Autre que cela, peut-être un widget personnalisé, mais je n'ai pas vu de manière par défaut de le faire. p>
Oui, vous pouvez le faire très facilement la validation ici est l'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(); }
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; } });