קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
Fragment מייצג חלק שאפשר לעשות בו שימוש חוזר בממשק המשתמש של האפליקציה. לקטע יש פריסה משלו, הוא מוגדר ומנוהל על ידו, יש לו מחזור חיים משלו והוא יכול לטפל באירועי קלט משלו. קטעי קוד לא יכולים לפעול לבד. הם צריכים להיות מאוחדים בפעילות או בחלק אחר. היררכיית התצוגה של החלק הופכת לחלק מהיררכיית התצוגה של המארח, או מצורפת אליה.
מודולריות
באמצעות קטעים אפשר לפצל את ממשק המשתמש לחלקים נפרדים, וכך להוסיף לו מודולריות ואפשרות לשימוש חוזר. פעילויות הן מקום אידיאלי להציב בו אלמנטים גלובליים סביב ממשק המשתמש של האפליקציה, כמו חלונית ניווט. לעומת זאת, קטעי קוד מתאימים יותר להגדרה ולניהול של ממשק המשתמש של מסך יחיד או של חלק ממסך.
כדאי לבחור אפליקציה שתתאים לגדלים שונים של מסכים. במסכים גדולים יותר, מומלץ להציג באפליקציה תפריט ניווט סטטי ורשימת פריטים בפריסת רשת. במסכים קטנים יותר, כדאי להציג באפליקציה סרגל ניווט בתחתית המסך ורשימה בפריסה ליניארית.
קשה לנהל את השינויים האלה בפעילות. הפרדת רכיבי הניווט מהתוכן יכולה להקל על התהליך. לאחר מכן, הפעילות אחראית להצגת ממשק המשתמש הנכון של הניווט, והקטע מציג את הרשימה בפריסה המתאימה.
איור 1. שתי גרסאות של אותו מסך בגדלים שונים של מסכים. בצד ימין, מסך גדול מכיל תפריט ניווט שנשלט על ידי הפעילות ורשימת רשת שנשלטת על ידי הקטע. בצד שמאל, מסך קטן מכיל סרגל ניווט ותחתון שמנוהל על ידי הפעילות ורשימה לינארית שמנוהלת על ידי החלק.
חלוקת ממשק המשתמש לקטעים מאפשרת לשנות בקלות את המראה של הפעילות בזמן הריצה. כשהפעילות נמצאת במצב מחזור חיים של STARTED ומעלה, אפשר להוסיף, להחליף או להסיר קטעים. בנוסף, אפשר לתעד את השינויים האלה בסטאק אחורה שמנוהל על ידי הפעילות, כדי שאפשר יהיה לבטל את השינויים.
אפשר להשתמש במספר מופעים של אותה קטגוריית קטעים באותה פעילות, בכמה פעילויות או אפילו כצאצא של קטע אחר. לכן, כדאי לספק רק קטע עם הלוגיקה הנדרשת לניהול ממשק המשתמש שלו. הימנעו מהסתמכות על קטע אחד מתוך קטע אחר או ממניפולציה עליו.
השלבים הבאים
מידע נוסף ומקורות מידע נוספים שקשורים לקטעים מופיעים במאמרים הבאים.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Fragments\n\nA [`Fragment`](/reference/androidx/fragment/app/Fragment) represents a\nreusable portion of your app's UI. A fragment defines and manages its own\nlayout, has its own lifecycle, and can handle its own input events. Fragments\ncan't live on their own. They must be *hosted* by an activity or another\nfragment. The fragment's view hierarchy becomes part of, or *attaches to*,\nthe host's view hierarchy.\n| **Note:** Some [Android Jetpack](/jetpack/androidx/versions) libraries, such as [Navigation](/guide/navigation), [`BottomNavigationView`](/reference/com/google/android/material/bottomnavigation/BottomNavigationView), and [`ViewPager2`](/jetpack/androidx/releases/viewpager2), are designed to work with fragments.\n\nModularity\n----------\n\nFragments introduce modularity and reusability into your activity's UI by\nletting you divide the UI into discrete chunks. Activities are an ideal\nplace to put global elements around your app's user interface, such as a\nnavigation drawer. Conversely, fragments are better suited to define and\nmanage the UI of a single screen or portion of a screen.\n\nConsider an app that responds to various screen sizes. On larger screens, you\nmight want the app to display a static navigation drawer and a list in a grid\nlayout. On smaller screens, you might want the app to display a bottom\nnavigation bar and a list in a linear layout.\n\nManaging these variations in the activity is\nunwieldy. Separating the navigation elements from the content can make this\nprocess more manageable. The activity is then responsible for displaying\nthe correct navigation UI, while the fragment displays the list with the proper\nlayout.\n**Figure 1.** Two versions of the same screen on different screen sizes. On the left, a large screen contains a navigation drawer that is controlled by the activity and a grid list that is controlled by the fragment. On the right, a small screen contains a bottom navigation bar that is controlled by the activity and a linear list that is controlled by the fragment.\n\nDividing your UI into fragments makes it easier to modify your activity's\nappearance at runtime. While your activity is in the `STARTED`\n[lifecycle state](/guide/components/activities/activity-lifecycle) or\nhigher, fragments can be added, replaced, or removed. And you can keep a record\nof these changes in a back stack that is managed by the activity, so that\nthe changes can be reversed.\n\nYou can use multiple instances of the same fragment class within the\nsame activity, in multiple activities, or even as a child of another\nfragment. With this in mind, only provide a fragment with\nthe logic necessary to manage its own UI. Avoid depending on or\nmanipulating one fragment from another.\n\nNext steps\n----------\n\nFor more documentation and resources related to fragments, see the following.\n\n### Getting Started\n\n- [Create a fragment](/guide/fragments/create)\n\n### Further topics\n\n- [Fragment manager](/guide/fragments/fragmentmanager)\n- [Fragment transactions](/guide/fragments/transactions)\n- [Navigate between fragments using animations](/guide/fragments/animate)\n- [Fragment lifecycle](/guide/fragments/lifecycle)\n- [Saving state with fragments](/guide/fragments/saving-state)\n- [Communicate with fragments](/guide/fragments/communicate)\n- [Working with the AppBar](/guide/fragments/appbar)\n- [Display dialogs with DialogFragment](/guide/fragments/dialogs)\n- [Debug your fragments](/guide/fragments/debugging)\n- [Test your fragments](/guide/fragments/test)\n\n### Samples\n\n### Videos\n\n- [Single Activity: Why, when, and how (Android Dev Summit '18)](https://www.youtube.com/watch?v=2k8x8V77CrU)\n- [Fragments: Past, present, and future (Android Dev Summit '19)](https://www.youtube.com/watch?v=RS1IACnZLy4)"]]