PracticU

Popup Menu

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Popup Menu
מילון מושגים:
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.
View - רכיב שאחראי על הצגת המידע למשתמש (התצוגה) בדפוס MVC. גם טבלה וירטואלית מבוססת שאילתה במסד נתונים.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.
בוליאני - סוג נתונים שיכול לקבל אחד משני ערכים בלבד: אמת (true) או שקר (false).

Popup Menu
בניגוד לתפריט אפשרויות ולתפריט הקשר, את ה-PopupMenu אפשר להציג בכל אירוע ולצד כל רכיב. השיעור מראה איך מציגים אותו בלחיצה על כפתור, מטפלים בבחירה ומסמנים צ'קבוקס.
השלבים
1. יצירה והצגה: באירוע ה-click של הכפתור יוצרים new PopupMenu(this, view), כשה-View הוא הרכיב שלידו התפריט יוצג, בדרך כלל הכפתור עצמו. אחר כך קוראים ל-inflate עם R.menu.menu_send (או תפריט הצבעים) ול-show.
2. רישום מאזין: קוראים ל-setOnMenuItemClickListener ונותנים this. כך פונקציה אחת משרתת את שני התפריטים, בלי לכתוב טיפול כפול במחלקה אנונימית.
3. מימוש הממשק: גורמים ל-MainActivity לממש את OnMenuItemClickListener (Alt+Enter), ובפונקציה onMenuItemClick עושים switch לפי item.getItemId(): צביעת הרקע בצבע, או Toast לאימייל, SMS ו-WhatsApp.
4. צ'קבוקסים: לפני show מקבלים את התפריט עם popupMenu.getMenu(). קוראים את צבע הרקע (Drawable, בדיקת instanceof ColorDrawable, getColor) ומסמנים בעזרת findItem(...).setChecked(true). אין שמירה גלובלית של הפריטים, כי הקוד רץ בכל לחיצה.
5. מיקום: התפריט מופיע ליד הכפתור, גם אם מזיזים את הכפתור למעלה במסך.
ערך ההחזרה
פונקציית הטיפול מחזירה boolean. אם טיפלתם באירוע מחזירים true, ואם לא, false, כדי שמאזין אחר יוכל לקבל אותו. בפועל מחזירים true בכל case שטופל ו-false בסוף.
איזה תפריט לבחור
- Options Menu: פעולות כלליות של המסך.
- Context Menu: לחיצה ארוכה על רכיב, מוצג באמצע המסך.
- Popup Menu: פעולות ספציפיות לרכיב, מוצג לידו, ואתם קובעים את האירוע.
אחרי השיעור אפשר להציג PopupMenu ליד כל כפתור ולהגיב לבחירה.
השיעור הבא בקורס: Dynamic Menu

פרקי ההרצאה: Popup Menu

  1. 00:00

    מהו Popup Menu ומתי משתמשים בו

  2. 01:41

    יצירת PopupMenu והצגתו ליד הלחצן

  3. 03:55

    רישום ל-OnMenuItemClickListener

  4. 05:56

    טיפול בלחיצה לפי מזהה הפריט

  5. 07:52

    בדיקת שני התפריטים באפליקציה

  6. 08:27

    סימון צ'קבוקסים בעזרת getMenu

תמלול ההרצאה: Popup Menu

הטקסט המלא של הדקות הראשונות בהרצאה «Popup Menu» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    סוג התפריט השלישי שאנחנו הולכים לראות נקרא Pop-up Menu. Pop-up Menu זה תפריט שניתן להציג אותו ליד כל רכיב שאנחנו רוצים, באיזה אירוע שאנחנו רוצים.

  2. 00:17

    אם Options Menu הוצג אך ורק על ידי לחצן פה למעלה באקשן בר, ו-Context Menu הוצג רק כאשר לחצו לחיצה של לונג קליק על איזשהו תפריט והוצג באמצע, אז פופ-אפ מניו אנחנו יכולים להחליט מתי בדיוק להציג אותו וליד מי להציג אותו כלומר יש פה גמישות הרבה יותר גדולה לגבי מתי הוא יוצג ואיפה הוא יוצג אז הרבה

  3. 00:43

    פעמים פשוט אוהבים להשתמש בפופ-אפ מניו בשביל להחליט אוקיי לוחצים על איזשהו רכיב מסוים והוא מוצג לידו יש לנו כאן את אותה תוכנית קודמת שביצענו לגבי הקונטקסט מניו אבל ניקיתי אותה מקוד הג'אווה ורק השארתי את הרכיבים הוויזואליים שהיו בלייאוט ואת התפריטים

  4. 01:06

    היו לנו שני לחצנים אחד שמאפשר להציג תפריט שמבצע פעולות של סנד השני מאפשר להציג תפריט שמבצע פעולות של צביעת צבע רקע ויש לנו פה בדיוק שני תפריטים שהיו לנו מקודם יש לנו פה את המניו סנד יש לו שליחה של אימייל סמ"ס ווואטסאפ יש לנו תפריט של קולורס והוא מאפשר לצבוע ברד גרין ובלו ואנחנו רוצים במקום להציג אותם כקונטקסט הפעם,

  5. 01:38

    להציג אותם כפופ-אפ. אז איך עושים את זה? אז להציג את התפריט זה מאוד פשוט. בואו ניגש לאירוע של לחצן הסנד, ניגש לקוד שלו, אלט אנטר, והנה יש לנו את הקוד של לחצן הסנד, ומה שאנחנו רוצים לעשות זה לבנות אובייקט מטיפוס פופ-אפ מניו.

  6. 02:03

    נגדיר new, פופ-אפ מניו, ואנחנו רואים שהקונסטרקטור אומר לנו, תנו לי בבקשה קונטקסט בכדי שיהיה לי שירותים שקשורים לקונטקסט אנחנו יכולים לתת לו את הדיס ותנו לי בבקשה איזה שהוא view שלידו אתם רוצים שאני יוצג.

  7. 02:21

    בואו ניתן לו בדיוק את אותו רכיב שאפעיל אותו. לדוגמה כאן אנחנו רואים שהלחצן שולח את עצמו לאירוע onclick אז אנחנו יכולים לקחת ולתת בדיוק את הלחצן הנוכחי ואז התפריט יוצג ממש לידו.

  8. 02:39

    לאחר מכן אנחנו רוצים to inflate אז בואו ניגש לפונקציית inflate ואז הוא אומר לנו איזה תפריט מרשימת התפריטים שיש לכם בדיוק אתם רוצים שאני אציג.

  9. 02:51

    בואו ניתן לו את r בתוך r יש לנו תיקיית מניו ובתוך תיקיית מניו יש לנו בדיוק את התפריט מניו send. הדבר הבא שאנחנו צריכים לעשות זה popup menu.show וזה מציג את התפריט. בואו נבצע את אותו הדבר על הפונקציה השנייה אנט אנטר אנטר נעתיק את שלושת השורות נדביק אותם כאן נשנה את הסוג של התפריט to inflate ממניו

  10. 03:23

    colors ובואו נריץ אז אם אנחנו באים ולוחצים על אחד הלחצנים אנחנו רואים את התפריט פופ אפ מניו ממש מוצג לידו אנחנו יכולים לבחור אחד מהפריטים אבל כמובן שלא כתבנו שום קוד שיתבצע כתוצאה מהלחיצה הזאת בואו נלחץ על השני ונראה שממש לידו מופיע התפריט ואנחנו יכולים גם כאן לבחור אבל לא כתבנו קוד שהתבצע כתגובה ללחיצה.

  11. 03:56

    אז בואו נחזור ונכתוב את אותו קוד שהתבצע כתגובה ללחיצה של היוזר והנוהל הוא פשוט רישום דינמי ללחיצה על ידי מנגנון הליסנר שלמדנו בנושא הליסנר דיזיין פאטר.

  12. 04:15

    וזה אומר שלפופ אפ מניו קיימת פונקציה שנקראת set on menu item listener on menu item click listener והיא אומרת לנו תביאו לי בבקשה איזשהו אובייקט שמממש את האינטרפייס on menu item click listener ואני בעצם אקרא לפונקציה שנמצאת שם.

  13. 04:37

    כאשר היוזר לוחץ על פריט אני אקבל את האירוע הזה אני אדווח לכם אותו ותעשו מה שאתם רוצים כתגובה ללחיצה. הכי פשוט זה לתת את ה-dis, כלומר את האובייקט הנוכחי של המחלקה Main Activity, כי אז אנחנו יכולים להשתמש בדיוק עם הפונקציה הזאת גם בתפריט הראשון וגם בתפריט השני.

  14. 05:02

    אם היינו משתמשים פה במחלקה אנונימית, אז היינו צריכים לבנות פעמיים את הטיפול בלחיצה, כאשר כאן אנחנו כותבים אותו פשוט פעם אחת. למה אנחנו מקבלים שוב שגיאה?

  15. 05:16

    מפני שהמחלקה מיין אקטיביטי עדיין לא מימשה את האינטרפייס אז בואו נלחץ על אלט אנטר נבחר ב-Make Main Activity Implement On-Menu Item Click Listener אני בוחר את זה אנחנו רואים שהוא אומר לנו יש לנו פונקציה אחת On-Menu Item Click שמקבלת פריט שנקרא אייטם מסוג מניו אייטם שזה כמובן הפריט שנלחץ בואו

  16. 05:41

    נוריד את ה-Directive Override אוקיי והנה עכשיו המיין אקטיביטי מממשת את האינטרפייס on menu item click listener הנה הפונקציה שתתבצע כשהיוזר לוחץ על פריט בתפריט וזה לא משנה באיזה תפריט בשני התפריטים האלה נרשמנו לאותה הפונקציה ואנחנו מקבלים את ההודעה בכל אחד

  17. 06:05

    מהתפריטים מה אנחנו צריכים לעשות בפונקציה בואו נעשה פה פוויץ' דומה למה שעשינו בעבר גט אייטם איידי הנה אנחנו מקבלים את האיידי של התפריט שנלחץ ונתחיל לבצע קייסים במידה והאיידי הוא מניו אייטם רד אז אנחנו רוצים לגשת ללייאוט שלנו וטו סט בקראנד קולור בואו נבחר קולור נקודה רד ונבצע ברייק נשכפל את הקוד הזה

  18. 06:48

    גם עבור גרין וגם עבור בלו ויש לנו עכשיו לבצע את הקוד עבור התפריט השני. עבור התפריט השני אנחנו רוצים את r.id.menuItemEmail במידה וזה קורה בואו נציג כרגע איזשהו טוסט שאומר E-Mail דומה למה שעשינו מקודם יש לנו כאן LengthLong נטפל את זה פעמיים הבא בתור זה עבור sms והאחרון

  19. 07:51

    היה עבור וואטסאפ בואו נבדוק בואו נלחץ על לחצן הסנד הנה יש לנו את האימייל אני לוחץ על האימייל ואנחנו רואים שהקוד מתבצע כתגובה על הקליק בדיוק בתפריט הנכון קיבלנו את התפריט לפונקציה בדקנו מי נלחץ ולפי זה עשינו את הקוד הנכון בואו נלחץ על תפריט הצבעים נבחר רד אנחנו רואים שהכל צבוע גרין

  20. 08:20

    כל צבוע ובלו הכל צבוע אנחנו אבל צריכים עדיין לטפל בצ'קבוקסים והטיפול בצ'קבוקסים כאן הוא טיפה שונה מהטיפול הקודם שביצענו כאן אנחנו צריכים לפני שאנחנו מציגים את התפריט כאן של הצבעים אנחנו צריכים לבוא ולקבל את אובייקט המניו אובייקט המניו ניתן להשגה על ידי popup menu.get menu

  21. 08:52

    אחרי שיש לנו את אובייקט המניו אנחנו יכולים לבצע פעולות בשביל להגדיר את ה-checkable המתאים. אז איך עושים את זה? קודם כל אנחנו רוצים לדעת מה בעצם הצבע הרקע של ה-activity.

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Context Menu

ההרצאה הבאה: Dynamic Menu

הרצאות קשורות מקורסים אחרים

  • תפריטים וסרגלים - Menu and Toolbar
  • ריאקט - יצירת תפריט באתר - Menu
  • בניית אתר אינטרנט אמיתי לחנות חיות - Menu

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון