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
FragmentManagerkasutatakse fragmentide haldamiseks.FragmentTransactionkasutatakse 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.
FragmentManagerhaldab elutsüklit ja olekut.- Fragmenti transaktsioon toimub atomaarse (kogu või mitte midagi) teostusena.
- Back Stack kasutamisel on vaja kutsuda
addToBackStack(). supportFragmentManagerkasutatakseAppCompatActivity-s.