Oamenii formatează informații despre date într-o varietate de moduri și acest lucru face ca colectarea de informații de bază brute de la utilizatori un pic complicat. Cea mai bună modalitate de a garanta date valabile este furnizarea unui control care să impună anumite reguli privind modul în care este formatată o dată. O modalitate de a face acest lucru este prin utilizarea unui dialog de dată specială pentru colectarea informațiilor.
Datele de dialog de dată, cum ar fi cea prezentată mai jos, sunt generate dintr-o clasă specială AlertDialog numită DatePickerDialog (android.app.DatePickerDialog). În afară de faptul că aveți toate caracteristicile clasei AlertDialog, puteți utiliza dataPickerDialog pentru a colecta date standardizate de la utilizator. În acest tutorial rapid, furnizăm pașii necesari pentru implementarea unui dialog de selectare a datei pentru a colecta de la utilizator o dată (cum ar fi o zi de naștere).
Am discutat deja despre cum să adăugați comenzi de dialog de bază la clasele de activitate. Acest tutorial rapid se bazează pe cunoștințele dvs. din tutorialul Android User Interface Design: Working With Dialogs tutorial. Puteți adăuga acest dialog la aplicația de probă de dialog furnizată în tutorialul menționat mai sus sau puteți crea o aplicație proprie.
Acum, să adăugăm un nou Dialog la clasa de activitate de bază.
Editați clasa de activitate Java și adăugați următoarele variabile membre:
statică finală privată int MY_DATE_DIALOG_ID = 3;
Acest cod definește un identificator de dialog unic pentru clasa noastră de activități. Valoarea este arbitrară, dar trebuie să fie unică în cadrul activității.
Pentru a crea instanțe Dialog, trebuie să furnizați un caz pentru DataPickerDialog în metoda onCreateDialog () a clasei dvs. de activitate. Atunci când se numește metoda showDialog (), se declanșează un apel la această metodă, care trebuie să returneze instanța Dialog corespunzătoare. În exemplul de cod avem trei Dialoguri diferite în clasa noastră și, prin urmare, va trebui să verificăm identificatorul de dialog de intrare pentru a reveni la Dialogul corespunzător.
Instrucțiunea specifică pentru noul dvs. DatePickerDialog în cadrul metodei onCreateDialog () este prezentată aici:
caz MY_DATE_DIALOG_ID: DatePickerDialog dateDlg = new DatePickerDialog (this, new DatePickerDialog.OnDateSetListener () public void onDateSet (vizualizare DatePicker, int int, int monthOfYear, int dayOfMonth) Time selectedDate = new Time , an); lungimea dtDob = dataData.toMillis (adevărată); CharSequence strDate = DateFormat.format ("MMMM dd, aaaa", dtDob); Toast.makeText (SuperSimpleDialogsActivity.this, "Data strânsă:" + strDate, Toast.LENGTH_SHORT ) .show ();, 2011,0, 1); dateDlg.setMessage ("Cine este ziua ta de naștere?"); returnați dataDlg;
Aici vom crea o nouă instanță a unui DatePickerDialog, îl vom configura și vom returna. Configurația este simplă. Includem o implementare a metodei onDateSet (), care se numește atunci când utilizatorul selectează o anumită dată și apasă butonul de dialog pozitiv. De asemenea, setăm mesajul de dialog pentru a solicita utilizatorului o dată de naștere.
Notă: Folosim clasa Time (android.text.format.Time) și DateFormat class (android.text.format.DateFormat) pentru a converti între formate de date citite de mașină și de la om.
Amintiți-vă că o activitate menține dialogurile în jur și le reutilizează ori de câte ori sunt afișate. Pentru că vrem să inițializăm DatePickerDialog până la data de astăzi, ar trebui să o inițializăm în metoda onPrepareDialog () a Activității. În caz contrar, a doua oară când lansați DatePickerDialog, acesta va fi setat la data alegerii la ora precedentă. Să presupunem că vrem să reutilizăm acest dialog, așa că vrem să îl resetăm la data curentă de fiecare dată când este afișat dialogul. Pentru aceasta, trebuie să actualizăm metoda onPrepareDialog () a activității. Iată instrucțiunea cazului pentru DatePickerDialog specifice în cadrul acestei metode:
caz MY_DATE_DIALOG_ID: DatePickerDialog dateDlg = (DatePickerDialog) dialog; int iDay, iMonth, iYear; Calendarul 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); pauză;
Aici folosim clasa Calendar (java.util.Calendar) pentru a seta controlul DatePickerDialog la data de astăzi de fiecare dată când dialogul este afișat cu metoda updateDate (). Rețineți că valoarea lunii este un număr de lună bazat pe 0 (adică octombrie ar fi luna 9, nu luna 10).
În cele din urmă, sunteți gata să declanșați dataPickerDialog pentru a fi afișat după cum este necesar. De exemplu, este posibil să adăugați un alt buton de control al butonului pe ecranul Activității pentru a declanșa afișarea parametrului DatePickerDialog. Operatorul său de clic poate arăta astfel:
public void onDateDialogButtonClick (Vizualizare v) showDialog (MY_DATE_DIALOG_ID);
Dialogurile sunt un instrument puternic de interfață cu utilizatorul, care vă poate ajuta să păstrați interfața cu utilizatorul în aplicație flexibilă și neclară. DatePickerDialogurile sunt utile în special pentru colectarea datei de intrare de la utilizator într-o manieră reproductibilă și standardizată. A DatePickerDialog este un tip special de AlertDialog cu toate caracteristicile sale.
Dezvoltatorii mobili Lauren Darcey și Shane Conder au coautorizat mai multe cărți despre dezvoltarea Android: o carte de programare în profunzime intitulată Dezvoltarea aplicațiilor fără fir Android, ediția a doua și Sams Teach Yourself Dezvoltare de aplicații Android în 24 de ore, ediția a doua. Când nu scriu, își petrec timpul dezvoltând software-ul mobil la compania lor și oferind servicii de consultanță. Acestea pot fi obținute prin e-mail la androidwirelessdev@[email protected], prin intermediul blogului lor la androidbook.blogspot.com, și pe Twitter @ androidwireless.
я я