Mennesker formaterer datoinformasjon på en rekke måter, og dette gjør at det er vanskelig å samle inn rå datoinformasjon fra brukerne. Den beste måten å garantere gyldige data på er å gi en kontroll som håndhever visse regler om hvordan en dato er formatert. En måte å gjøre dette på er å bruke en spesiell datadialog for å samle inn innspill.
Datodialoger, som vist nedenfor, genereres fra en spesiell AlertDialog-klasse som heter DatePickerDialog (android.app.DatePickerDialog). I tillegg til å ha alle funksjonene i AlertDialog-klassen, kan du bruke DatePickerDialog til å samle inn standardisert datoinngang fra brukeren. I denne korte opplæringen gir vi trinnene som kreves for å implementere en date picker-dialog for å samle en dato (for eksempel en bursdag) fra brukeren.
Vi har allerede diskutert hvordan du legger til grunnleggende dialogbokser til aktivitetsklassene dine. Denne raske opplæringen bygger på din kunnskap fra opplæringen Android User Interface Design: Working With Dialogs opplæring. Du kan enten legge til denne dialogen til dialogprøveapplikasjonen som er oppgitt i den ovennevnte opplæringen, eller opprett din egen applikasjon.
La oss legge til en ny dialog til din grunnleggende aktivitetsklasse.
Rediger aktivitets Java-klassen din og legg til følgende medlemsvariabler:
privat statisk endelig int MY_DATE_DIALOG_ID = 3;
Denne koden definerer en unik dialog-ID for vår aktivitetsklasse. Verdien er vilkårlig, men må være unik i aktiviteten.
Hvis du vil opprette dialogbokser, må du legge til en sak for DatePickerDialog i metoden onCreateDialog () i aktivitetsklassen. Når metoden showDialog () kalles, utløser den et anrop til denne metoden, som må returnere det aktuelle Dialog-forekomsten. I eksempelkoden har vi tre forskjellige Dialogger i vår klasse, og derfor må vi sjekke den innkommende Dialog-identifikatoren for å returnere Dialogen av passende type.
Den spesifikke saken setningen for den nye DatePickerDialog i metoden onCreateDialog () vises her:
tilfelle MY_DATE_DIALOG_ID: DatePickerDialog dateDlg = ny DatePickerDialog (denne, nye DatePickerDialog.OnDateSetListener () offentlig tomgang påDateSet (DatePicker visning, int år, int månedOfYear, int dayOfMonth) Tid selectedDate = ny Tid (); valgtDate.set (dagOfMonth, monthOfYear , år), lang dtDob = valgtDate.toMillis (true); CharSequence strDate = DateFormat.format ("MMMM dd, yyyy", dtDob); Toast.makeText (SuperSimpleDialogsActivity.this, "Dato plukket:" + strDate, Toast.LENGTH_SHORT ) .show ();, 2011,0, 1); dateDlg.setMessage ("Når er bursdagen din?"); returdatoDlg;
Her oppretter vi en ny forekomst av DatePickerDialog, konfigurerer den og returnerer den. Konfigurasjonen er enkel. Vi inkluderer en implementering av metoden onDateSet (), som kalles når brukeren velger en bestemt dato og trykker på den positive dialogknappen. Vi stiller også dialogboksen melding for å spørre brukeren for en fødselsdato.
Merk: Vi bruker klassen Time class (android.text.format.Time) og DateFormat (android.text.format.DateFormat) for å konvertere mellom maskin- og menneskelige lesbare datoformater.
Husk at en aktivitet holder dialogbokser rundt og gjenbruker dem når de blir vist. Fordi vi vil initialisere DatePickerDialog til dagens dato, bør vi initialisere den i metoden onPrepareDialog () for aktiviteten. Ellers vil den andre gangen du starter DatePickerDialog, bli satt til datoen valgt forrige gang. La oss anta at vi vil gjenbruke denne dialogen, så vi vil tilbakestille den til gjeldende dato hver gang dialogen vises. For å gjøre dette må vi oppdatere onPrepareDialog () -metoden til aktiviteten. Her er saken setningen for den bestemte DatePickerDialog innenfor denne metoden:
tilfelle MY_DATE_DIALOG_ID: DatePickerDialog dateDlg = (DatePickerDialog) dialogboksen; int iDay, iMonth, iYear; Kalender cal = Calendar.getInstance (); iDay = cal.get (Kalender.DAY_OF_MONTH); iMonth = cal.get (Calendar.MONTH); iYear = cal.get (Kalender.YEAR); dateDlg.updateDate (iYear, iMonth, iDay); gå i stykker;
Her bruker vi kalenderklassen (java.util.Calendar) for å sette DatePickerDialog-kontrollen til dagens dato hver gang dialogen vises med metoden updateDate (). Merk at månedsverdien er et 0-basert månedenummer (det vil si at oktober ville være måned 9, ikke måned 10).
Til slutt er du klar til å utløse DatePickerDialog for å vise etter behov. For eksempel kan du legge til en annen knappekontroll på aktivitetsskjermen for å utløse DatePickerDialog å vises. Klikkhåndtereren kan se noe ut som dette:
offentlig ugyldig onDateDialogButtonClick (Vis v) showDialog (MY_DATE_DIALOG_ID);
Dialogger er et kraftig verktøy for brukergrensesnitt som kan hjelpe deg med å holde applikasjonsgrensesnittet ditt fleksibelt og ryddig. DatePickerDialogs er spesielt nyttig for å samle datoinngang fra brukeren på en reproduserbar og standardisert måte. En DatePickerDialog er en spesiell type AlertDialog med alle funksjonene.
Mobilutviklere Lauren Darcey og Shane Conder har medforfatter flere bøker om Android-utvikling: en grundig programmeringsbok med tittel Android Wireless Application Development, andre utgave og Sams lær deg selv Android Application Development i 24 timer, andre utgave. Når de ikke skriver, bruker de sin tid på å utvikle mobil programvare hos deres firma og tilby konsulenttjenester. De kan nås via e-post til [email protected], via bloggen deres på androidbook.blogspot.com, og på Twitter @androidwireless.
я я