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
FragmentManagerna správu fragmentov. FragmentTransactionsa 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.