Fragment
מדובר ב"רכיב מורכב מרכיבים",
ממש דומה לאקטיביטי.
אלא שאקטיביטי יכולה
להופיע על המסך ללא פרגמנט,
ופרגמנט יכול להופיע על המסך
רק כחלק של אקטיביטי
אפשר לצור בתוך אקטיביטי
מספר פרגמנטים ולהציג אותם
כולם בו זמני על המסך.
אפשר לצור מספר פרגמנטים
שבאותו מקום על המסך
יתחלפו אחד עם השני.
מספר פרגמנטים
בו זמני על אותו מסך
פרגמנטים מתחלפים
חלק קבוע
שטח לפרגמנטים
מתחלפים
Fragment #1
Fragment #2
Fragment #3
בגדול שימוש בפרגמנטים
הוא "דרך מקבילה"
לשימוש במספר אקטיביטי.
"מעגל חיים" של פרגמנט
onAttach(Activity)
הוא נקרא פעם אחת בלבד כאשר הוא משויך לפעילות.
onCreate
הוא משמש לאתחול הפרגמנט.
onCreateView(LayoutInflater, ViewGroup, Bundle)
יוצר ומחזיר היררכיית תצוגה.
onActivityCreated
זה נקרא לאחר השלמת השיטה onCreate()
onViewStateRestored
הוא מספק למקטע מידע שכל המצב השמור של היררכיית תצוגת הפרגמנט שוחזר.
onStart()
הופך את השבר לגלוי.
onResume()
הופך את הפרגמנט לאינטראקטיבי.
onPause()
נקרא כאשר הפרגמנט אינו אינטראקטיבי יותר.
onStop()
נקרא כאשר השבר אינו נראה עוד.
onDestroyView()
מאפשר למקטע לנקות משאבים.
onDestroy()
מאפשר למקטע לבצע ניקוי סופי של מצב המקטע.
onDetach()
זה נקרא רגע לפני שהפרגמנט אינו משויך עוד לפעילותו.דע
לפרכמנט אין Context משלו,
לכן יש צורך להשתמש ב-context
של אקטיביטי בה פרגמנט מופיע
getContext()
שימושי לקבלת ההקשר, אך עשוי להיות null
getActivity()
שימושי לקבלת הפעילות, אך עשוי להיות null
requireContext()
דרך בטוחה לקבל קשר ל-context,
יוצר חריגה אם הפרגמנט אינו מצורף.
requireActivity()
היא דרך בטוחה להשיג פעילות, יוצר חריגה אם הפרגמנט אינו מצורף.
איך יוצרים פרגמנט?
FragmentManager
מחלקה באנדרואיד שמנהלת פרגמנטים באפליקציה.
הוא מספק שיטות להוספה, הסרה, החלפה, הסתרה והצגת פרגמנטים, כמו גם ניהול מצבם.
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction
מנהל פעולות על פרגמנטים
כגון הוספה, מחיקה והחלפה.
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
פעולה (שלמה) להצגת פרגמנט
איך מעבירים נתונים...
אפשר להעביר נתונים בעזרת
Bundle
זהו "מיכל נתונים" המשמש להעברת נתונים בין רכיבים (למשל בין פרגמנטים).
חבילה מעביר נתונים בתוך אפליקציה,
כגון בעת העברת נתונים מקטע אחד למשנהו
או שמירה על מצב פעילות (למשל כאשר המסך מסובב).
אפשר להעביר נתונים בעזרת
Bundle
אפשר להעביר נתונים בעזרת
UI
אפשר להעביר נתונים בעזרת
ViewModel(LiveData)
או בעזרת
SharedPreferences
אפשר להעביר נתונים בעזרת
SharedPreferences