Android DatePickerDialog: Set min et max date pour la sélection
Je sais qu'il y a beaucoup de question, mais aucune des solutions de travail pour moi, si cette question. Je veux restreindre l'utilisateur à sélectionner une date avant aujourd'hui, mais je ne suis pas en mesure de le faire.
public class DatePickerDialogFragment extends DialogFragment {
private OnDateSetListener listener;
public void setListener(OnDateSetListener listener) {
this.listener = listener;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(getContext(), listener, year, month, day);
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
return dialog;
}
}
Je suis en train de montrer que c'est l'
DatePickerDialogFragment fragment = new DatePickerDialogFragment();
fragment.setListener(dateSetListener);
fragment.show(getSupportFragmentManager(), "Choose booking date");
Je veux que l'utilisateur ne devrait pas être en mesure de sélectionner la date avant aujourd'hui. Comme vous pouvez le voir, j'ai appelé setMinDate()
méthode avec le temps d'aujourd'hui, mais comme aucun effet. La boîte de dialogue affiche les dates avant aujourd'hui comme grisé mais sélectionnable.
J'ai aussi essayé à la sous-classe DatePickerDialog
et remplacer onDateChanged
comme l'ont proposé certains stackoverflow réponses, mais sans succès.
Avez-vous trouver du travail pour que cela..?
J'ai fini par faire ce qui est mentionné dans l'acceptation de poste.
découvrez mycustom datepickerdialog github.com/Redman1037/EightFoldsDatePickerDialog
OriginalL'auteur Abdullah | 2015-10-10
Vous devez vous connecter pour publier un commentaire.
Essayer cette méthode
au lieu de votre
EDIT1:
J'ai aussi été confronté à ce problème que l'utilisateur peut choisir de ne pas sélectionnable par dates dans
Android L 5.0.2
. Il y a actuellement un bug signalé ici. Il est résolu deAndroid L 5.1.0
.Pour solution temporaire à ce problème, vous pouvez comparer les choix de la date avec la date système actuelle et de mettre une condition sur cette base. J'ai utilisé ce que ma solution
EDIT2:
ajouter
onDateSent()
méthode dansDatePickerDialogFragment
et juste vérifier si c'est plus tôt que la date que vous définissez danssetMinDate()
. Si oui, alors seulement montrer leDatePickerDialog
de nouveau.qui android lollipop version que vous utilisez?
C'est Android 5.0.2
Voir edit2 pour la solution
Merci pour la mise à jour. Finalement, j'ai fini par faire la même chose.
OriginalL'auteur Rajesh
Obtenir l'Heure du Système et soustraire 1 seconde à partir de la Il
OriginalL'auteur Kishore Jethava
OriginalL'auteur Arpit
Au-dessus de l'API 11 min date, vous pouvez utiliser
android:minDate="mm/dd/yyyy"
ou
setMinDate(long time)
Pour Max date
android:maxDate="mm/dd/yyyy"
//XMLsetMaxDate(new Date().getTime());
//Heure actuelleOriginalL'auteur Sangeeta