Junior
Kaip galima įgyvendinti fragmentus Activity?
sobes.tech AI
Atsakymas iš AI
Activity fragmentus galima įgyvendinti deklaratyviai XML arba programiškai naudojant FragmentManager.
Deklaratyviai (XML):
<fragment
android:id="@+id/my_fragment"
android:name="com.example.MyFragment" // Pilnas fragmento klasės pavadinimas
android:layout_width="match_parent"
android:layout_height="match_parent" />
- Fragmentas pridedamas kuriant Activity.
- Lengva naudoti statiniams maketams.
- Mažiau lankstus dinamiškoms operacijoms.
Programiškai (naudojant FragmentManager):
// Activity metodo viduje, pvz., onCreate arba įvykio metu
val fragmentManager = supportFragmentManager // Skirtas AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()
// Fragmento pridėjimas
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)
// Fragmento keitimas (pašalina esamą ir prideda naują)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)
// Fragmento pašalinimas
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// jei (fragmentToRemove != null) {
// fragmentTransaction.remove(fragmentToRemove)
// }
// Pridėjimas į Back Stack (leidžia grįžti į ankstesnį fragmentą)
fragmentTransaction.addToBackStack(null) // Žymo eilutė (gali būti null)
// Transakcijos užbaigimas
fragmentTransaction.commit() // Asinchroninis vykdymas
// arba
// fragmentTransaction.commitNow() // Sinchroninis vykdymas
FragmentManagernaudojamas fragmentų valdymui.FragmentTransactionnaudojamas operacijoms vykdyti.- Siūlo didesnį lankstumą dinamiškai keisti UI.
- Gali valdyti Back Stack navigacijai.
Konteinerio naudojimas:
Dinamiškai pridėti ar keisti fragmentus dažnai naudojamas XML apibrėžtas konteineris, pvz., FrameLayout arba LinearLayout:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Tada fragmentas pridedamas arba keičiama šio konteinerio viduje.
Svarbūs aspektai:
- Fragmento gyvavimo ciklas glaudžiai susijęs su Activity gyvavimo ciklu.
FragmentManagervaldo gyvavimo ciklą ir būseną.- Fragmento transakcija vykdoma atomariškai.
- Naudojant Back Stack, būtina iškviesti
addToBackStack(). supportFragmentManagernaudojamasAppCompatActivity.