Les gens formulent les informations de date de différentes façons, ce qui rend la collecte des informations de date brutes auprès des utilisateurs un peu délicate. Le meilleur moyen de garantir la validité des données est de fournir un contrôle qui applique certaines règles sur le formatage de la date. L’une des façons de le faire consiste à utiliser un dialogue de date spécial pour collecter les entrées..
Les dialogues de date, tels que celui présenté ci-dessous, sont générés à partir d'une classe spéciale AlertDialog appelée DatePickerDialog (android.app.DatePickerDialog). En plus de disposer de toutes les fonctionnalités de la classe AlertDialog, vous pouvez utiliser DatePickerDialog pour collecter une entrée de date normalisée de l'utilisateur. Dans ce didacticiel rapide, nous décrivons les étapes nécessaires pour implémenter une boîte de dialogue de sélection de date afin de collecter une date (telle que la date de naissance) de l'utilisateur..
Nous avons déjà expliqué comment ajouter des commandes de dialogue de base à vos classes d'activité. Ce didacticiel rapide s'appuie sur vos connaissances tirées du didacticiel Didacticiel Création d'une interface utilisateur Android: Travailler avec des dialogues. Vous pouvez soit ajouter cette boîte de dialogue à l'exemple d'application de la boîte de dialogue fournie dans le didacticiel susmentionné, ou créer votre propre application..
Ajoutons maintenant un autre nouveau dialogue à votre classe d'activité de base.
Modifiez votre classe Java d'activité et ajoutez les variables de membre suivantes:
int statique final final MY_DATE_DIALOG_ID = 3;
Ce code définit un identifiant de dialogue unique pour notre classe d'activité. La valeur est arbitraire, mais doit être unique dans l'activité..
Pour créer des instances de dialogue, vous devez fournir un cas pour votre DatePickerDialog dans la méthode onCreateDialog () de votre classe Activity. Lorsque la méthode showDialog () est appelée, elle déclenche un appel à cette méthode, qui doit renvoyer l'instance de dialogue appropriée. Dans l'exemple de code, nous avons trois dialogues différents dans notre classe et nous devrons donc vérifier l'identifiant de dialogue entrant pour renvoyer le dialogue du type approprié..
L'instruction de cas spécifique de votre nouveau DatePickerDialog dans la méthode onCreateDialog () est affichée ici:
case MY_DATE_DIALOG_ID: DatePickerDialog dateDlg = new DatePickerDialog (ceci, nouvelle DatePickerDialog.OnDateSetListener () (void public surDate) , année); long dtDob = selectedDate.toMillis (true); CharSequence strDate = DateFormat.format ("MMMM dd, yyyy", dtDob); Toast.makeText (SuperSimpleDialogsActivity.this, "Date choisie:" + strDate, Toast.Handemag] ) .show ();, 2011,0, 1); dateDlg.setMessage ("Quand est ton anniversaire?"); dateDlg de retour;
Ici, nous créons une nouvelle instance d'un DatePickerDialog, la configurons et la renvoyons. La configuration est simple. Nous incluons une implémentation de la méthode onDateSet (), qui est appelée lorsque l'utilisateur sélectionne une date spécifique et appuie sur le bouton de dialogue positif. Nous définissons également le message de la boîte de dialogue pour inviter l'utilisateur à indiquer une date de naissance.
Remarque: Nous utilisons la classe Time (android.text.format.Time) et la classe DateFormat (android.text.format.DateFormat) pour convertir les formats de date lisibles par machine et par personne..
Rappelez-vous qu'une activité conserve les boîtes de dialogue et les réutilise chaque fois qu'elles sont affichées. Puisque nous voulons initialiser le DatePickerDialog à la date du jour, nous devrions l’initialiser dans la méthode onPrepareDialog () de l’Activité. Sinon, la deuxième fois que vous lancerez DatePickerDialog, il sera défini sur la date choisie précédemment. Supposons que nous souhaitons réutiliser cette boîte de dialogue. Nous souhaitons donc la réinitialiser à la date du jour à chaque affichage de la boîte de dialogue. Pour ce faire, nous devons mettre à jour la méthode onPrepareDialog () de l'activité. Voici l'instruction de cas pour le DatePickerDialog spécifique dans cette méthode:
case MY_DATE_DIALOG_ID: boîte de dialogue DatePickerDialog dateDlg = (DatePickerDialog); int iDay, iMonth, iYear; Calendrier cal = Calendar.getInstance (); iDay = cal.get (Calendar.DAY_OF_MONTH); iMonth = cal.get (Calendar.MONTH); iYear = cal.get (Calendar.YEAR); dateDlg.updateDate (iYear, iMonth, iDay); Pause;
Ici, nous utilisons la classe Calendar (java.util.Calendar) pour définir le contrôle DatePickerDialog sur la date du jour chaque fois que la boîte de dialogue est affichée avec la méthode updateDate (). Notez que la valeur du mois est un nombre de mois basé sur 0 (c’est-à-dire que le mois d’octobre correspond au mois 9 et non au mois 10).
Enfin, vous êtes prêt à déclencher l'affichage de votre DatePickerDialog selon vos besoins. Par exemple, vous pouvez ajouter un autre contrôle Button à l'écran de votre activité pour déclencher l'affichage de votre DatePickerDialog. Son gestionnaire de clics pourrait ressembler à quelque chose comme ceci:
public void onDateDialogButtonClick (Afficher v) showDialog (MY_DATE_DIALOG_ID);
Les boîtes de dialogue sont un outil d'interface utilisateur puissant qui peut vous aider à garder l'interface utilisateur de votre application flexible et dégagée. Les DatePickerDialogs sont particulièrement utiles pour collecter la date de l'utilisateur de manière reproductible et normalisée. Un DatePickerDialog est un type spécial de AlertDialog avec toutes ses fonctionnalités..
Les développeurs mobiles Lauren Darcey et Shane Conder ont co-écrit plusieurs livres sur le développement Android: un livre de programmation en profondeur intitulé Développement d'applications sans fil Android, deuxième édition et Sams Teach Yourself Développement d'applications Android dans 24 heures, Deuxième édition. Lorsqu'ils n'écrivent pas, ils passent leur temps à développer des logiciels mobiles dans leur entreprise et à fournir des services de conseil. Vous pouvez les contacter par courrier électronique à l'adresse [email protected], via leur blog à l'adresse androidbook.blogspot.com et sur Twitter @androidwireless..
я я