Junior
Jak lze implementovat fragmenty v Activity?
sobes.tech AI
Odpověď od AI
Ve Fragmentu lze implementovat deklarativně v XML nebo programově pomocí FragmentManager.
Deklarativně (v XML):
<fragment
android:id="@+id/my_fragment"
android:name="com.example.MyFragment" // Plné jméno třídy fragmentu
android:layout_width="match_parent"
android:layout_height="match_parent" />
- Fragment je přidán při vytváření Activity.
- Snadné použití pro statické rozvržení.
- Méně flexibilní pro dynamické operace.
Programově (pomocí FragmentManager):
// Uvnitř metody Activity, například onCreate nebo při události
val fragmentManager = supportFragmentManager // Pro AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()
// Přidání fragmentu
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)
// Nahrazení fragmentu (odstraní stávající v kontejneru a přidá nový)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)
// Odstranění fragmentu
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// if (fragmentToRemove != null) {
// fragmentTransaction.remove(fragmentToRemove)
// }
// Přidání do Back Stack (umožňuje uživateli vrátit se k předchozímu fragmentu pomocí tlačítka "Zpět")
fragmentTransaction.addToBackStack(null) // Řetězec tagu pro backstack (lze null)
// Ukončení transakce
fragmentTransaction.commit() // Asynchronní provedení
// nebo
// fragmentTransaction.commitNow() // Synchronní provedení
- Používá se
FragmentManagerpro správu fragmentů. FragmentTransactionse používá k provádění operací (přidání, odstranění, nahrazení atd.).- Nabízí větší flexibilitu pro dynamickou změnu UI během běhu.
- Může spravovat Back Stack pro navigaci.
Použití kontejneru:
Pro programové přidání nebo výměnu fragmentů se obvykle používá kontejner v XML rozvržení Activity, například FrameLayout nebo LinearLayout:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Poté se v kódu Activity fragment přidá nebo nahradí uvnitř tohoto kontejneru.
Důležité aspekty:
- Životní cyklus fragmentu je úzce spojen s životním cyklem Activity.
- Fragment Manager spravuje životní cyklus a stav fragmentů.
- Fragment Transaction se provádí atomicky (buď celá operace, nebo žádná).
- Při použití Back Stack je nutné volat
addToBackStack(). - Pro práci s fragmenty v AppCompatActivity používejte
supportFragmentManager.