PracticU

Save and Load Shared Preferences

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Save and Load Shared Preferences
מילון מושגים:
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.
Integer - סוג נתונים למספר שלם, כלומר מספר ללא חלק עשרוני.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
אחסון - שמירת נתונים באופן קבוע על התקנים כמו דיסקים או שירותי ענן, כך שיישמרו גם לאחר כיבוי.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.

Save and Load Shared Preferences
איך שומרים הגדרות והעדפות של משתמש כך שיטענו מחדש בהרצה הבאה של האפליקציה? בשיעור בונים מסך עם שם משתמש, גיל וצבע רקע, ושומרים אותם ב-Shared Preferences.
איך שומרים וטוענים
1. למה "shared": בעבר אפליקציות אחרות יכלו לקרוא את ההגדרות. מגרסה מסוימת של אנדרואיד זה הופסק, וכיום ההגדרות נקראות רק מהאפליקציה שלנו.
2. קריאת הקלט: בלחצן Save קוראים את שם המשתמש, את הגיל (עם Integer.parseInt) ואת הצבע מה-EditText.
3. יצירת האובייקט: getSharedPreferences מקבלת שם כללי לקבוצת ההגדרות (למשל "App Preferences", בדרך כלל מספיק שם אחד לאפליקציה) ו-mode. המצב היחיד שנשאר הוא MODE_PRIVATE.
4. שמירה: מקבלים Editor עם edit(), וקוראים ל-putString ול-putInt עם מפתח וערך, ולבסוף ל-commit(). מוצג גם Toast עם "saved".
5. טעינה ב-onCreate: יוצרים שוב את האובייקט עם אותו שם, בלי Editor, וקוראים עם getString ו-getInt. חובה לתת ערך ברירת מחדל, כי ייתכן שהמפתח לא קיים (null למחרוזות, 0 לגיל).
6. הצגה: מציבים בשדות רק אם הערך קיים (שם שונה מ-null, גיל גדול מ-0). את הגיל ממירים למחרוזת לפני setText, אחרת הוא ייחשב למזהה resource. הצבע מומר ב-Color.parseColor ומוצב כרקע של ה-LinearLayout.
בדיקה וניקוי
- אחרי סגירה והרצה מחדש הנתונים נטענים, וגם שינוי ערכים ושמירה מחדש עובד.
- המשתמש יכול למחוק את כל הנתונים דרך App info, אחסון, ו-Clear Data. זה מנקה מסדי נתונים, Shared Preferences וקבצים שהאפליקציה שמרה. אחרי המחיקה האפליקציה עולה בלי נתונים.
שימו לב
בלי קוד הטעינה, הנתונים נשמרים אבל לא חוזרים לאפליקציה מעצמם.
כעת אפשר לשמור העדפות משתמש ב-Shared Preferences ולטעון אותן בכל הרצה של האפליקציה.
השיעור הבא בקורס: Shared Preferences Helper Class

פרקי ההרצאה: Save and Load Shared Preferences

  1. 00:00

    מה הם Shared Preferences

  2. 00:55

    אפליקציית דוגמה לשמירת העדפות

  3. 02:15

    קריאת הנתונים שהמשתמש הזין

  4. 03:02

    יצירת SharedPreferences במצב Private

  5. 04:20

    שמירה עם Editor ו-commit

  6. 05:43

    בדיקת השמירה בהרצת האפליקציה

  7. 06:21

    טעינת הנתונים ב-onCreate

  8. 07:41

    הצגת הנתונים שנטענו

תמלול ההרצאה: Save and Load Shared Preferences

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

  1. 00:02

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

  2. 00:17

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

  3. 00:40

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

  4. 00:59

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

  5. 01:23

    אז בואו נניח שאנחנו רוצים שהמשתמש יגיד לנו מה היוזרניים, מה ה-age שלו, גיל, ואיזה צבע הוא רוצה עבור המסכים השונים של המערכת, ושישמור לנו את ההגדרות האלה.

  6. 01:35

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

  7. 01:56

    יש לנו פה ID ל-Linear Layout, כדי לצבוע את הצבע הרקע של ה-Linear Layout. יש לנו כאן ב-OnCreate את הקוד שמוצא את הרכיבים האלה, ובלחצן Save אנחנו רוצים לבצע שמירה של המידע הזה ל-Shared Preferences.

  8. 02:16

    הדבר הראשון שאנחנו רוצים לעשות זה לקרוא את הנתונים שהיוזר הכניס. אז יש לנו פה את היוזרניים שלו, וניגש ל-Edit, טקסט, יוזרניים, gettext 2-string לקחנו את ה-user name בואו ניקח את הגיל שלו הפעם זה יהיה על ידי אינטג'ר בואו ניקח את זה כאינטג'ר parse int

  9. 02:42

    נפנה ל-edit text h gettext 2-string הנה לקחנו את הגיל שלו ובואו ניקח גם את הצבע ויהיה edit text color.gettext 2-string אחרי שיש לנו את שלושת הנתונים שלקחנו ברמת המשתמש אנחנו רוצים לשמור אותם ל-shared preferences.

  10. 03:11

    אז איך זה מתבצע? אז דבר ראשון, אנחנו יוצרים אובייקט שנקרא shared preferences על ידי פונקציה שנקראת get shared preferences.

  11. 03:25

    הדבר הראשון שהפונקציה מבקשת זה name. ה-name הזה זה בעצם שם כללי עבור כל ה-shared preferences שלנו ברמת האפליקציה. השם הזה יאפשר לנו לאחר מכן להביא בחזרה את כל קבוצת ה-Shared Preferences.

  12. 03:45

    אז אנחנו רואים שאנחנו יכולים לחלק Shared Preferences לקבוצות, אבל ברוב המקרים מספיק לנו שם אחד ברמת כל האפליקציה. לדוגמה, App Preferences.

  13. 03:59

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

  14. 04:16

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

  15. 04:30

    הדבר הבא שאנחנו צריכים לבנות זה shared-preferences.editor. האדיטור זה אובייקט שיאפשר לנו לבצע את השמירה של המידע במכשיר.

  16. 04:43

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

  17. 04:55

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

  18. 05:17

    לבסוף color ש-color זה סטרינג וניתן את ה-color. והנה שמרנו את המידע. הדבר האחרון שאנחנו צריכים לעשות זה editor.comic.

  19. 05:31

    בואו ניתן פה איזה טוסט שיגיד פשוט saved. בואו נריץ, אז הנה אפליקציה רצה ואנחנו יכולים להכניס נתונים. מוי של היוזרניים, 12 לגיל, Red ל-Color, לבצע save והמידע אכן נשמר במכשיר.

  20. 06:02

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

  21. 06:20

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

  22. 06:40

    אבל הפעם אנחנו לא רוצים את האדיטור, כי אנחנו לא רוצים לערוך את השארד פרפרנסס, אנחנו רק רוצים לקרוא את המידע. אז בואו ניקח את ה-user name, הנה המידע הפריט ל-shared preference get string.

  23. 06:59

    המפתח זה user name, ואנחנו מחויבים לתת איזשהו ערך בת מחדל, כי אולי אין בתוך השארד פרפרנסס את המידע הזה. בואו ניתן null.

  24. 07:11

    נשכפל את זה. המידע הבא שאנחנו רוצים זה int h, ואנחנו רוצים to get int, הפעם h, ובואו ניתן לו 0. לבסוף אנחנו רוצים את ה-color, זה יהיה getString, וקראנו למפתח color, שוב פעם null.

  25. 07:41

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

  26. 08:16

    רק אם הוא לדוגמה גדול מאפס בואו ניגש לאדיט טקסט h set text ונשרשר מכרוזת ל-age מפני שה-age הוא מספר ואנחנו לא רוצים לתת כאן מספר טהור כי אחרת יחשבו שאנחנו רוצים איזשהו ID של איזשהו resource אז נהפוך אותו ל-string ואז ידעו שזה מכרוזת ואם ה-color גדול או ליתר דיוק שונה מ-null אנחנו רוצים לגשת ל-edit text color אנחנו רוצים לגשת ל-set text

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

ההרצאה הקודמת: Saving Data on the Device

ההרצאה הבאה: Shared Preferences Helper Class

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

  • transaction save point
  • תיבת דואר משותפת - shared mailbox
  • הרצאה 1 - קורס Load Runner הראשון
  • הסבר על Load Balancer ב-Azure

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

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