Junior
Cum se pot implementa fragmentele într-o Activity?
sobes.tech AI
Răspuns de la AI
În fragmentele de Activity, acestea pot fi implementate declarativ în XML sau programatic folosind FragmentManager.
Declarativ (în XML):
<fragment
android:id="@+id/my_fragment"
android:name="com.example.MyFragment" // Numele complet al clasei fragmentului
android:layout_width="match_parent"
android:layout_height="match_parent" />
- Fragmentul este adăugat la crearea Activity.
- Ușor de utilizat pentru layout-uri statice.
- Mai puțin flexibil pentru operațiuni dinamice.
Programatic (cu FragmentManager):
// În interiorul unei metode a Activity, de exemplu, onCreate sau la un eveniment
val fragmentManager = supportFragmentManager // Pentru AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()
// Adăugare fragment
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)
// Înlocuire fragment (șterge cel existent în container și adaugă unul nou)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)
// Ștergere fragment
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// if (fragmentToRemove != null) {
// fragmentTransaction.remove(fragmentToRemove)
// }
// Adăugare în Back Stack (permite utilizatorului să revină la fragmentul anterior cu butonul "Înapoi")
fragmentTransaction.addToBackStack(null) // Șir de etichete pentru back stack (poate fi null)
// Finalizare tranzacție
fragmentTransaction.commit() // Executare asincronă
// sau
// fragmentTransaction.commitNow() // Executare sincrona
- Se folosește
FragmentManagerpentru gestionarea fragmentelor. FragmentTransactioneste folosit pentru a efectua operații (adăugare, eliminare, înlocuire etc.).- Oferă o flexibilitate mai mare pentru modificarea dinamică a UI-ului în timpul execuției.
- Se poate gestiona Back Stack pentru navigare.
Utilizarea containerului:
Pentru adăugarea sau înlocuirea programatică a fragmentelor, de obicei se folosește un container în layout-ul XML al Activity, de exemplu, FrameLayout sau LinearLayout:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Apoi, în codul Activity, fragmentul este adăugat sau înlocuit în interiorul acestui container.
Aspecte importante:
- Ciclul de viață al fragmentului este strâns legat de ciclul de viață al Activity.
FragmentManagergestionează ciclul de viață și starea fragmentelor.- Tranzacția de fragment se execută atomic (sau întreaga operație sau nimic).
- La utilizarea Back Stack, trebuie apelată
addToBackStack(). - Pentru lucrul cu fragmente în
AppCompatActivity, se foloseștesupportFragmentManager.