Sobes.tech
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
  • FragmentManager naudojamas fragmentų valdymui.
  • FragmentTransaction naudojamas 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.
  • FragmentManager valdo gyvavimo ciklą ir būseną.
  • Fragmento transakcija vykdoma atomariškai.
  • Naudojant Back Stack, būtina iškviesti addToBackStack().
  • supportFragmentManager naudojamas AppCompatActivity.