
fragment ב-XML. בדוגמה נבנות שתי פרגמנטים, אחת לבני ואחת לפאפי.app לוחצים מקש ימני, New, Fragment, Fragment (Blank), ונותנים שם (BunnyFragment). מבטלים את אפשרויות הקוד המוכן כדי לקבל פרגמנט נקייה, ונוצרים קובץ Java וקובץ layout.FrameLayout שנוצר ב-LinearLayout אנכי עם ImageView של בני (עם margin), ו-TextView בגודל 25 בתוך ScrollView שמאפשר גלילה של טקסט ארוך. כל המידע כאן סטטי.onCreateView מקבלים LayoutInflater, container ו-savedInstanceState. מפעילים inflate על ה-layout, שומרים את התוצאה ב-linearLayoutRoot עם casting ומחזירים אותה. אם צריך לעדכן רכיבים פנימיים, משתמשים ב-findViewById על ה-root.PuppyFragment נוצרת בשכפול הקוד וה-layout של בני, עם תמונה וטקסט של פאפי.fragment עם wrap_content. שלושה attributes: id (חובה גם אם לא משתמשים בו בקוד), name (שם המחלקה של הפרגמנט, חובה) ו-tools:layout (לא חובה).tools:layout משמש רק את הדיזיינר. בלעדיו רואים בדיזיינר תגית ריקה, אבל בהרצה הפרגמנט מופיעה.Fragment מ-Android Support v4 ולא מ-android.app. הספרייה מאפשרת הצגה על מכשירים ישנים, ובמקרים מסוימים הפרגמנט המקורית לא תעבוד כמו שצריך.הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Fragment בעזרת XML» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הראשון שאנחנו הולכים לראות זה איך לצרף פרגמנט ואז להציג את הפרגמנט על ידי תגיד פרגמנט בתוך ה-XML. כדי לצרף פרגמנט אנחנו צריכים ללכת לרמת האפליקציה עצמה בתקיית אפ, ללחוץ מקש ימני, new ולבחור פרגמנט ופרגמנט blank.
לאחר מכן אנחנו נותנים שם לפרגמנט. הפרגמנט הראשונה שאנחנו הולכים לבנות זה פרגמנט שפשוט נציגה מידע לגבי בני. אז בואו נקרא לפרגמנט בני פרגמנט. בגלל שהפרגמנט מציגה UI, אז אנחנו רואים שיש לנו כבר layout של הפרגמנט שנקראת fragment underline bunny.
זה בסדר. אנחנו רוצים אבל ברוב המקרים להוריד את הוויזה אלה בכדי לקבל פריגמנט רקע בלי כל מיני קודים מוכנים בתוכה.
בואו בשלב הזה נלחץ finish ומה שאנחנו מקבלים זה גם קוד Java עבור הפריגמנט וגם קוד layout עבור הפריגמנט. הנה יש לנו כאן את קוד ה-Java ואם אנחנו מסתכלים אנחנו רואים כאן את ה-layout של הפריגמנט.
אז דבר ראשון, מה שאנחנו רוצים לעשות זה קודם כל לגשת ולעצב את ה-layout של הפרגמנט. מה הם הרכיבים הויזואליים שאנחנו רוצים לראות על גבי הפרגמנט? אז אנחנו רואים שב-default אנחנו מקבלים frame layout ואין שום בעיה לגשת ולשנות את זה לכל layout שאנחנו רוצים.
בואו נגדיר כאן linear layout הסטנדרטית שאנחנו מכירים. נפטר רגע מזה ונפטר מזה, נגדיר כאן את הסגירה, בואו נפטר מכל התוכן שאוטומטית קיבלנו, נגדיר שהלארט שלנו הוא orientation vertical ונגדיר כאן תמונה, בואו ניקח תמונה של match parent וניקח wrap content וניתן לה איזשהו margin שתהיה קצת בנפרד,
מהUIs האחרים ויש לנו פה source בדרובול יש לנו בני. הדבר הבא שאנחנו רוצים זה איזה שהוא text view ואנחנו רוצים match parent וrap content, text size, בואו ניקח
25 ובואו נגדיר את הטקסט כי יש לנו strings, בני ויש לנו פה טקסט לגבי בני יכול להיות שבהמשך אנחנו נחליף את הטקסט הזה ולכן נגדיר כאן scroll view שבמידה והטקסט תהיה טקסט רב אנחנו נוכל לגלול אותו.
בואו נגדיר match parent וrap content וניתן גם לו איזה שהוא margin של 10 dp ואת הטקסט view נשים בתוכו. וכרגע כל המידע זה מידע סטטי שממש מוגדר בתוך ה-layout.
אז אחרי שהגדרנו את הלארד שלנו וככה הפריגמנט נראית, אז אנחנו יכולים לגשת לקוד של ה-Java של הפריגמנט. בקוד של ה-Java אנחנו יכולים להיפטר פה מכל מיני דברים, יש לנו constructor rec, אנחנו צריכים constructor rec או default constructor, אבל אם אנחנו נוריד אותו אז זה אותו הדבר, המערכת מייצרת לנו constructor כזה.
בואו נשים את זה בצורה כזאת, ובואו נבין מה יש לנו כאן מול העיניים. אז אנחנו רואים אוטומטית את הפונקציה OnCreateView שמתבצעת אוטומטית, כאשר אנחנו שמים את הפרגמנט על אקטיביטי במסגרת הפרגמנט Lifecycle.
והתפקיד של הפונקציה הזאת זה לבנות את ה-UI ולהחזיר את ה-Layout הראשי. קודם כל, מה אנחנו בעצם מקבלים לפונקציה? Layout Inflator זה בעצם אובייקט שמאפשר לנו to inflate the layout.
אנחנו כבר רואים כאן את ה-layout עצמו שאנחנו בנים מקודם. Container זה אותו רכיב שבתוכו אנחנו הולכים לשים את הפרגמנט. כאן נראה שזה יהיה חלק מהאקטיביטי.
כאן אנחנו מקבלים saved instant state בכדי לשחזר את ה-state של הפרגמנט. כמובן כאשר ה-user מבצע שינוי אוריינטציה, יכול להיות שכל ה-state של הפרגמנט נהרס, ואנחנו נרצה בהמשך לשחזר אותו.
בואו נחלק את השורה הזאת לשני חלקים. חלק ראשון נבנה linear layout, נקרא לו linear layout root, ונכניס לתוכו את מה שהאינפלייטר מחזיר בואו נבצע פה הקאסטינג ל-LinearLayout והדבר הבא זה נחזיר את ה-LinearLayoutRoot רק בכדי להבין מהם שתי השורות שהתבצעו כאן מה שקורה כאן זה שהאינפלייטר מבצע אינפלייט ל-FragmentBunny Layout ומה שהוא מחזיר לנו זה את ה-RootTag שיש פה
אנחנו רואים שזה LinearLayout לכן אנחנו יכולים להיות בטוחים שאנחנו הולכים לקבל ליניאר ליארט אם אנחנו עכשיו רוצים להדכן רכיבים פנימיים בתוך הליניארט רות האלה אז אנחנו יכולים to find view by ID כל רכיב פנימי שנמצא בתוך הליארט ולהדכן אותו להכניס לתוכו איזה מידע שאנחנו רוצים ולבסוף אנחנו מחזירים מאון
create view את הליניאר ליארט רות זה בעצם כל מה שאנחנו צריכים לעשות לגבי הבני פרגמנט. שימו לב רק שהפרגמנט מגיעה כרגע בימים אלו מ-Android Support v4 פרגמנט, כאשר יש עוד פאקאג' והפאקאג' הזה נקרא android.app.
ויש לנו שם את הפרגמנט. וזה בעצם הפרגמנט הראשונה שיצאה לעולם, באיזשהו שלב יש לנו כאן את הספורט לייבררי שמאפשרת