
OnDateSetListener, ואחריהם שנה, חודש ויום ברירת מחדל. בהתחלה ניתן ערך קבוע (1.1.2017), ובהמשך התאריך הנוכחי. בשיעור this ניתן פעמיים: פעם כ-Context ופעם כמאזין.Make MainActivity implement OnDateSetListener מוסיף את הפונקציה onDateSet, שמופעלת רק כשהמשתמש לוחץ אישור.setCancelable(false) כדי שלחיצה בחוץ לא תבטל, ואחר כך show(). כפתור Cancel סוגר בלי להפעיל את הפונקציה.onDateSet משתמשים ב-String.format עם %02d/%02d/%04d לפי היום, החודש והשנה. הספרה אחרי האפס היא מספר הספרות עם אפסים מובילים, ולכן יום 5 מוצג כ-05. את ההודעה מציגים ב-Toast.Calendar.getInstance() ואז calendar.get(Calendar.YEAR), Calendar.MONTH ו-Calendar.DAY_OF_MONTH, ומעבירים אותם לקונסטרקטור.onDateSet ממוספרים מ-0 עד 11, ולכן יש להוסיף 1 לחודש לפני ההצגה. בבדיקה אפריל הופיע כ-3 עד שהוסיפו 1.this שונים במשמעות: Context לעומת מאזין, אף שהאובייקט זהה.הטקסט המלא של הדקות הראשונות בהרצאה «Date Dialog» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
תיבת הדיאלוג הבאה שאנחנו הולכים לראות נקראת דייט פיקר דיאלוג והיא יורשת את הלרד דיאלוג ומסוגלת לקלוט מהמשתמש משהו ספציפי שבמקרה הזה זה תאריך.
בואו נראה איך עובדים איתה. הנה יש לנו פה לחצן שמאפשר למשתמש לקבל תאריך סלקט דייט, אנחנו ניגשים לקוד ואנחנו רוצים לבנות אובייקט מטיפוס הדיאלוג.
אז יש לנו דייט פיקר דיאלוג שווה ניו דייט פיקר דיאלוג והקונסטרקטור רוצה רשימה של דברים. דבר ראשון, קונטקסט כרגיל, איזה קונטקסט אנחנו נמצאים בו.
הדבר הבא זה את האובייקט שמממש איזשהו אינטרפט שנקרא on-date-set listener. זה בדיוק אובייקט הליסנר שלנו. בשביל שכרגע הכל יהיה פשוט ולא נעשה מחלקה אנונימית בתוך קונסטרקטור, שזה קצת לא אסתטי ומורכב לראות את זה, בואו גם כאן ניתן את הדיסק, אבל אתם צריכים להבדיל בין שני הדיסקים האלה.
זה בעצם הקונטקסט, זאת האקטיביטי שלנו שמכילה שירותים שאיתם הוא בונה את הדיאלוג ועושה עוד דברים, ויש לנו כאן את הדיסק, שזה במקרה הזה גם האקטיביטי שלנו, אבל זה לצורך מימוש האינטרפיס.
כאן אנחנו נצטרך ללכת ולממש את האינטרפיס. הדבר הבא שהמערכת מבקשת, שהדיאלוג הזה מבקש מאיתנו, זה מהו התאריך הדיפולטי שאנחנו רוצים שהוא יציג שנה חודש יום אז בואו ניתן לו כרגע את 2017 הראשון לראשון שיהיה איזה תאריך יפה והגיוני כזה כמובן שעכשיו הוא אומר לי שיש פה איזה שגיאה מפני שאנחנו לא מממשים את האינטרפייס אם אנחנו נלחץ אלט אנטר או עכשיו הוא אומר
לנו מייק מיין אקטיביטי אימפלמנט את האינטרפייס און דייט סט ליסנר בואו נלחץ ואז יש לו פונקציה אחת און דייט סט והנה אנחנו רואים שהוא יוצר לנו אותה, מממש את האינטרפייס, אין שום בעיה עם הקונסטרקטור הזה עכשיו.
הפונקציה הזאת תופעל כאשר היוזר בוחר תאריך. הדבר הבא שאנחנו רוצים לעשות זה להציג את הדיאלוג DatePickerDialog.show ואולי לפני זה נגדיר DatePickerDialog.setCancellable.false בכדי שהיוזר לא יוכל ללחוץ בכל מיני מקומות מחוץ לדיאלוג וכך לבטל את הדיאלוג אנחנו רוצים שהוא יתייחס אלינו שיבחר תאריך איזה שהוא רוצה מקסימום
שילחץ על cancel ואז לא יקרה כלום הדבר הבא שאנחנו רוצים לעשות זה לבצע פעולה מסוימת במידה והוא בחר תאריך במקרה כזה הפונקציה onDateSet מופעלת ואנחנו רוצים לייצר פה איזשהו message להצגה שאומר איזה תאריך נבחר בואו נשתמש ב-String.format String.format פשוט מאפשרת לנו לפרמט מחרוזת כך שאנחנו יכולים גם לרשום במחוזת משלנו וגם לשלב בתוכה משתנים חיצוניים.
אז בואו נרשום שה-selectedDate הוא, כאן אנחנו רוצים לשרשר את היום, חודש ושנה. אז היום שלנו זה משתנה אינטג'רי, אז אנחנו צריכים לכתוב אחוז d בכדי לשתול בדיוק כאן את הערך האינטג'רי.
אם אנחנו רוצים גם שיהיה לנו מה שנקרא לידינג זירוז, זאת אומרת אפסים מקדימים, כלומר אם היום לדוגמה הוא חמש, אנחנו לא רוצים לראות חמש, אנחנו רוצים לראות אפס חמש, אז אנחנו צריכים להגיד לו שאנחנו רוצים אפס שתיים, וזה אומר שיש לנו אפסים
מקדימים בגודל שתיים, רק אפס חמש יהיה לו אפס אפס אפס אפס חמש לדוגמה. לאחר מכן אנחנו רוצים פלאש בהתאם לתאריך ואז יש לנו עוד אחוז אפס שתיים d זה עבור החודש, לאחר מכן יש לנו עוד אחוז 0,4D הפעם, מפני שזאת השנה, ולאחר מכן אנחנו רוצים להגיד לו איזה ערכים אנחנו רוצים שהוא ישתול
בהתאמה במקומות כאלה. אז אם אנחנו בתאריך עברי, אז אנחנו רוצים קודם כל את ה-day of month, לאחר מכן month of year, ולאחר מכן את ה-year שקיבלנו.
כל המחרוזת הזאת בואו נציג באיזשהו טוסט, רק בכדי לראות שהכל עובד. הנה המפג', הנה אורך הטוסט ובואו נריץ. אז בואו נלחץ על סלקט דייט ושימו לב שזאת בילד אין דיאלוג מוכנה,