
Integer.parseInt) ואת הצבע מה-EditText.getSharedPreferences מקבלת שם כללי לקבוצת ההגדרות (למשל "App Preferences", בדרך כלל מספיק שם אחד לאפליקציה) ו-mode. המצב היחיד שנשאר הוא MODE_PRIVATE.Editor עם edit(), וקוראים ל-putString ול-putInt עם מפתח וערך, ולבסוף ל-commit(). מוצג גם Toast עם "saved".getString ו-getInt. חובה לתת ערך ברירת מחדל, כי ייתכן שהמפתח לא קיים (null למחרוזות, 0 לגיל).null, גיל גדול מ-0). את הגיל ממירים למחרוזת לפני setText, אחרת הוא ייחשב למזהה resource. הצבע מומר ב-Color.parseColor ומוצב כרקע של ה-LinearLayout.הטקסט המלא של הדקות הראשונות בהרצאה «Save and Load Shared Preferences» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בסדרת הסרטונים הזו אנחנו הולכים לראות עבודה עם Shared Preferences. אז כאמור, Shared Preferences זה בעצם העדפות של המשתמש או הגדרות שונות של המשתמש ברמת האפליקציה שלנו.
מידע כמו ה-Username של המשתמש, אם אנחנו רוצים להמשיך ולשמור אותו, הגיל שלו, צבע שהוא רוצה לבחור, גופן שהוא רוצה להחליט עבור כל האפליקציה, כל מיני העדפות אנחנו יכולים לשמור לו ב-Shared Preferences ולטעון את זה בהרצה הבאה של האפליקציה ולהמשיך לעבוד עם זה.
למה זה נקרא Shared? מפני שבעבר ההגדרות האלה יכלו להיקרא גם מאפליקציות אחרות, אבל מאיזושהי גרסה של אנדרואיד הפסיקו את זה ואנחנו יכולים לשמור Shared Preferences ולקרוא אותם רק מתוך האפליקציה שלנו.
אפליקציות אחרות כבר לא יכולות לקרוא את ההגדרות שאנחנו מכניסים. אז בואו נראה איך אנחנו עושים את זה. יש לנו כאן אפליקציה שיש בה אדי טקסט עבור יוזרניים, יש בה אדי טקסט עבור הגיל של המשתמש, יש בה אדי טקסט עבור צבע שהמשתמש רוצה, ויש לנו כאן לחצן סייב.
אז בואו נניח שאנחנו רוצים שהמשתמש יגיד לנו מה היוזרניים, מה ה-age שלו, גיל, ואיזה צבע הוא רוצה עבור המסכים השונים של המערכת, ושישמור לנו את ההגדרות האלה.
אנחנו רוצים בהרצה הבאה של האפליקציה כמובן לטעון הכל ולבצע שימוש בנתונים האלה. בואו נסתכל איך אנחנו יכולים לשמור את המידע הזה ל-Shared Preferences. במיין אקטיביטי יש לנו פה את הרכיבים השונים, שימו לב שיש לנו פה גם את ה-ID של ה-Linear Layout.
יש לנו פה ID ל-Linear Layout, כדי לצבוע את הצבע הרקע של ה-Linear Layout. יש לנו כאן ב-OnCreate את הקוד שמוצא את הרכיבים האלה, ובלחצן Save אנחנו רוצים לבצע שמירה של המידע הזה ל-Shared Preferences.
הדבר הראשון שאנחנו רוצים לעשות זה לקרוא את הנתונים שהיוזר הכניס. אז יש לנו פה את היוזרניים שלו, וניגש ל-Edit, טקסט, יוזרניים, gettext 2-string לקחנו את ה-user name בואו ניקח את הגיל שלו הפעם זה יהיה על ידי אינטג'ר בואו ניקח את זה כאינטג'ר parse int
נפנה ל-edit text h gettext 2-string הנה לקחנו את הגיל שלו ובואו ניקח גם את הצבע ויהיה edit text color.gettext 2-string אחרי שיש לנו את שלושת הנתונים שלקחנו ברמת המשתמש אנחנו רוצים לשמור אותם ל-shared preferences.
אז איך זה מתבצע? אז דבר ראשון, אנחנו יוצרים אובייקט שנקרא shared preferences על ידי פונקציה שנקראת get shared preferences.
הדבר הראשון שהפונקציה מבקשת זה name. ה-name הזה זה בעצם שם כללי עבור כל ה-shared preferences שלנו ברמת האפליקציה. השם הזה יאפשר לנו לאחר מכן להביא בחזרה את כל קבוצת ה-Shared Preferences.
אז אנחנו רואים שאנחנו יכולים לחלק Shared Preferences לקבוצות, אבל ברוב המקרים מספיק לנו שם אחד ברמת כל האפליקציה. לדוגמה, App Preferences.
הדבר הבא שאנחנו רוצים זה איזשהו מוד, כאשר המוד היחידי זה מוד פרייבט. פעם היינו יכולים להגדיר גם מוד אחר, שמאפשר לשמור מידע כך שאפליקציות אחרות יוכלו לקבל אותו.
היום רק מוד פרייבט זה המוד היחידי שניתן לבצע והוא מאפשר לנו לשמור את ה-shared preferences ברמת האפליקציה שלנו מבלי שאפליקציות אחרות יוכלו לקבל את ה-preferences האלה.
הדבר הבא שאנחנו צריכים לבנות זה shared-preferences.editor. האדיטור זה אובייקט שיאפשר לנו לבצע את השמירה של המידע במכשיר.
זה מתבצע על ידי רובייקט השארד פרפרנסס שהגדרנו נקודה אדיט. כל מה שנשאר לנו לעשות עכשיו זה פשוט להשתמש עם האדיטור בכדי לשמור את המידע.
פוט סטרינג להמציא מפתח לדוגמה יוזרניים ולשמור את המידע לדוגמה יוזרניים. נשכפל את זה, הפעם נשמור int age וניתן את ה-age.
לבסוף color ש-color זה סטרינג וניתן את ה-color. והנה שמרנו את המידע. הדבר האחרון שאנחנו צריכים לעשות זה editor.comic.
בואו ניתן פה איזה טוסט שיגיד פשוט saved. בואו נריץ, אז הנה אפליקציה רצה ואנחנו יכולים להכניס נתונים. מוי של היוזרניים, 12 לגיל, Red ל-Color, לבצע save והמידע אכן נשמר במכשיר.
אבל אם אנחנו עכשיו סוגרים את האפליקציה ומריצים אותה שוב האם המידע ששמענו ייטען באורך פלא בחזרה לאפליקציה? התשובה כמובן לא, אנחנו לא כתבנו קוד שאין אותו בחזרה.
בואו נעשה את זה. זה כמובן אנחנו רוצים לבצע לדוגמה ב-onCreate. ב-onCreate אנחנו רוצים לגשת עוד פעם לפונקציה שיוצרת לנו את ה-shared preferences, בואו ניקח בדיוק את הפקודה הזאת, נעתיק אותה לכאן, והנה יש לנו שוב פעם את אובייקט השארד פרפרנסס,
אבל הפעם אנחנו לא רוצים את האדיטור, כי אנחנו לא רוצים לערוך את השארד פרפרנסס, אנחנו רק רוצים לקרוא את המידע. אז בואו ניקח את ה-user name, הנה המידע הפריט ל-shared preference get string.
המפתח זה user name, ואנחנו מחויבים לתת איזשהו ערך בת מחדל, כי אולי אין בתוך השארד פרפרנסס את המידע הזה. בואו ניתן null.
נשכפל את זה. המידע הבא שאנחנו רוצים זה int h, ואנחנו רוצים to get int, הפעם h, ובואו ניתן לו 0. לבסוף אנחנו רוצים את ה-color, זה יהיה getString, וקראנו למפתח color, שוב פעם null.
אחרי שיש לנו את המידע שטענו מאשר preferences אנחנו רוצים להשתמש איתו, אבל כדאי לבצע בדיקה האם המידע הוא בעצם אכן היה קיים שם והוא לא נאלי אם היוזרניים לדוגמה שונה מנאל זה אומר שאכן הצלחנו לקלוט יוזרניים מהשארד פרפרנסס בואו ניגש לאדיט טקסט יוזרניים סט טקסט יוזרניים אותו הדבר נבצע עבור ה-h
רק אם הוא לדוגמה גדול מאפס בואו ניגש לאדיט טקסט h set text ונשרשר מכרוזת ל-age מפני שה-age הוא מספר ואנחנו לא רוצים לתת כאן מספר טהור כי אחרת יחשבו שאנחנו רוצים איזשהו ID של איזשהו resource אז נהפוך אותו ל-string ואז ידעו שזה מכרוזת ואם ה-color גדול או ליתר דיוק שונה מ-null אנחנו רוצים לגשת ל-edit text color אנחנו רוצים לגשת ל-set text