Junior
Hogyan valósíthatók meg a fragmentek egy Activity-ben?
sobes.tech MI
Válasz az MI-től
Az Activity fragmentekben ezeket deklaratív módon XML-ben vagy programozottan lehet megvalósítani a FragmentManager segítségével.
Deklaratív (XML-ben):
<fragment
android:id="@+id/my_fragment"
android:name="com.example.MyFragment" // A fragment teljes osztályneve
android:layout_width="match_parent"
android:layout_height="match_parent" />
- A fragment hozzáadásra kerül az Activity létrehozásakor.
- Egyszerű statikus elrendezésekhez.
- Kevésbé rugalmas dinamikus műveletekhez.
Programozott (a FragmentManager segítségével):
// Az Activity egyik metódusában, például onCreate vagy esemény során
val fragmentManager = supportFragmentManager // Az AppCompatActivity-hez
val fragmentTransaction = fragmentManager.beginTransaction()
// Fragment hozzáadása
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)
// Fragment cseréje (eltávolítja a meglévőt a konténerből és újat ad hozzá)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)
// Fragment eltávolítása
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// ha (fragmentToRemove != null) {
// fragmentTransaction.remove(fragmentToRemove)
// }
// Hozzáadás a Back Stack-hez ( lehetővé teszi a felhasználónak, hogy a "Vissza" gombbal visszatérjen az előző fragmenthez)
fragmentTransaction.addToBackStack(null) // Címke sztring a back stack-hez (null is lehet)
// A tranzakció befejezése
fragmentTransaction.commit() // Aszinkron végrehajtás
// vagy
// fragmentTransaction.commitNow() // Szinkron végrehajtás
- A
FragmentManager-t használjuk a fragmentek kezelésére. - A
FragmentTransaction-t a műveletek végrehajtására (hozzáadás, eltávolítás, csere stb.) - Nagyobb rugalmasságot nyújt a UI dinamikus módosításához futás közben.
- A Back Stack kezelése navigációhoz.
A konténer használata:
A programozott fragment hozzáadásához vagy cseréjéhez általában egy konténert használunk az Activity XML layoutjában, például FrameLayout vagy LinearLayout:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Ezután az Activity kódjában a fragment ebbe a konténerbe kerül hozzáadásra vagy cserére.
Fontos szempontok:
- A fragment életciklusa szorosan összefügg az Activity életciklusával.
- A
FragmentManagerkezeli a fragmentek életciklusát és állapotát. - A fragment tranzakció atomikus módon hajtódik végre (vagy az egész művelet, vagy semmi).
- A Back Stack használatakor a
addToBackStack()-et kell hívni. - Fragmentekkel való munka az
AppCompatActivity-ben asupportFragmentManager-rel történik.