Sobes.tech
Junior

Ako implementovať fragmenty v Activity?

sobes.tech AI

Odpoveď od AI

Vo Fragmentu je možné ho implementovať deklaratívne v XML alebo programovo pomocou FragmentManager.

Deklaratívne (v XML):

<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment" // Plné meno triedy fragmentu
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • Fragment sa pridáva pri vytváraní Activity.
  • Jednoduché na použitie pre statické rozloženia.
  • Menej flexibilné pre dynamické operácie.

Programovo (pomocou FragmentManager):

// Vo vnútri metódy Activity, napríklad onCreate alebo pri udalosti
val fragmentManager = supportFragmentManager // Pre AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()

// Pridanie fragmentu
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)

// Nahradenie fragmentu (odstráni existujúci v kontajneri a pridá nový)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)

// Odstránenie fragmentu
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// ak (fragmentToRemove != null) {
//     fragmentTransaction.remove(fragmentToRemove)
// }

// Pridanie do Back Stack (umožňuje používateľovi vrátiť sa k predchádzajúcemu fragmentu cez tlačidlo "Späť")
fragmentTransaction.addToBackStack(null) // Reťazec tagu pre backstack (môže byť null)

// Ukončenie transakcie
fragmentTransaction.commit() // Asynchrónne vykonanie
// alebo
// fragmentTransaction.commitNow() // Synchronné vykonanie
  • Používa sa FragmentManager na správu fragmentov.
  • FragmentTransaction sa používa na vykonávanie operácií (pridanie, odstránenie, nahradenie atď.).
  • Poskytuje väčšiu flexibilitu pre dynamickú zmenu UI počas behu.
  • Môže spravovať Back Stack pre navigáciu.

Použitie kontajnera:

Na programové pridanie alebo výmenu fragmentov sa zvyčajne používa kontajner v XML rozložení Activity, napríklad FrameLayout alebo LinearLayout:

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Potom sa v kóde Activity fragment pridá alebo nahradí v tomto kontajneri.

Dôležité aspekty:

  • Životný cyklus fragmentu je úzko spojený so životným cyklom Activity.
  • Fragment Manager spravuje životný cyklus a stav fragmentov.
  • Fragment Transaction sa vykonáva atómovo (buď celá operácia, alebo žiadna).
  • Pri použití Back Stack je potrebné volať addToBackStack().
  • Pre prácu s fragmentmi v AppCompatActivity používajte supportFragmentManager.