Junior
Jak można zaimplementować fragmenty w Activity?
sobes.tech AI
Odpowiedź od AI
W fragmentach Activity można je implementować deklaratywnie w XML lub programowo za pomocą FragmentManager.
Deklaratywnie (w XML):
<fragment
android:id="@+id/my_fragment"
android:name="com.example.MyFragment" // Pełna nazwa klasy fragmentu
android:layout_width="match_parent"
android:layout_height="match_parent" />
- Fragment jest dodawany podczas tworzenia Activity.
- Łatwy w użyciu dla statycznych układów.
- Mniej elastyczny dla operacji dynamicznych.
Programowo (z FragmentManager):
// Wewnątrz metody Activity, np. onCreate lub podczas zdarzenia
val fragmentManager = supportFragmentManager // Dla AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()
// Dodanie fragmentu
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)
// Zamiana fragmentu (usuwa istniejący w kontenerze i dodaje nowy)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)
// Usunięcie fragmentu
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// if (fragmentToRemove != null) {
// fragmentTransaction.remove(fragmentToRemove)
// }
// Dodanie do stosu powrotu (pozwala użytkownikowi wrócić do poprzedniego fragmentu przyciskiem "Wstecz")
fragmentTransaction.addToBackStack(null) // Ciąg etykiety dla stosu powrotu (może być null)
// Zakończenie transakcji
fragmentTransaction.commit() // Wykonanie asynchroniczne
// lub
// fragmentTransaction.commitNow() // Wykonanie synchroniczne
- Używa się
FragmentManagerdo zarządzania fragmentami. FragmentTransactionsłuży do wykonywania operacji (dodawanie, usuwanie, zamiana itp.).- Zapewnia większą elastyczność do dynamicznych zmian UI podczas działania.
- Można zarządzać stosami powrotu dla nawigacji.
Użycie kontenera:
Do programowego dodawania lub zamiany fragmentów zwykle używa się kontenera w układzie XML Activity, np. FrameLayout lub LinearLayout:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Następnie w kodzie Activity fragment jest dodawany lub zamieniany wewnątrz tego kontenera.
Ważne aspekty:
- Cykl życia fragmentu jest ściśle powiązany z cyklem życia Activity.
FragmentManagerzarządza cyklem życia i stanem fragmentów.- Transakcja fragmentu jest wykonywana atomowo (cała operacja lub żadna).
- Przy użyciu stosu powrotu konieczne jest wywołanie
addToBackStack(). - Do pracy z fragmentami w
AppCompatActivityużywa sięsupportFragmentManager.