Sobes.tech
Junior

Kuidas saab Activitys implementida fragmente?

sobes.tech AI

Vastus AI-lt

Activitys saab fragmentide rakendada deklaratiivselt XML-is või programmiliselt, kasutades FragmentManager.

Deklaratiivselt (XML-is):

<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment" // Täisklassinimi fragment
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • Fragment lisatakse Activity loomisel.
  • Lihtne kasutada staatiliste paigutuste jaoks.
  • Vähem paindlik dünaamiliste operatsioonide jaoks.

Programmiliselt (FragmentManager abil):

// Activity meetodi sees, näiteks onCreate või sündmuse ajal
val fragmentManager = supportFragmentManager // AppCompatActivity jaoks
val fragmentTransaction = fragmentManager.beginTransaction()

// Fragmenti lisamine
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)

// Fragmenti asendamine (kustutab olemasoleva ja lisab uue)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)

// Fragmenti eemaldamine
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// kui (fragmentToRemove != null) {
//     fragmentTransaction.remove(fragmentToRemove)
// }

// Lisamine Back Stack-ile (lubab kasutajal naasta eelneva fragmenti juurde)
fragmentTransaction.addToBackStack(null) // Tagi string (võib olla null)

// Transaktsiooni lõpetamine
fragmentTransaction.commit() // Asünkroonne täitmine
// või
// fragmentTransaction.commitNow() // Sünkroonne täitmine
  • FragmentManager kasutatakse fragmentide haldamiseks.
  • FragmentTransaction kasutatakse operatsioonide teostamiseks.
  • Pakub suuremat paindlikkust UI dünaamiliseks muutmiseks.
  • Võib hallata Back Stack-i navigeerimiseks.

Konteineri kasutamine:

Dünaamiliseks lisamiseks või vahetamiseks kasutatakse tavaliselt XML-is määratletud konteinerit, näiteks FrameLayout või LinearLayout:

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

Seejärel lisatakse või vahetatakse fragment selles konteineris.

Olulised aspektid:

  • Fragmenti elutsükkel on tihedalt seotud Activity elutsükliga.
  • FragmentManager haldab elutsüklit ja olekut.
  • Fragmenti transaktsioon toimub atomaarse (kogu või mitte midagi) teostusena.
  • Back Stack kasutamisel on vaja kutsuda addToBackStack().
  • supportFragmentManager kasutatakse AppCompatActivity-s.