Sobes.tech
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 FragmentManager kezeli 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 a supportFragmentManager-rel történik.