Junior
Kako implementirati fragmente u Activity?
sobes.tech АИ
Одговор од АИ
У активити фрагменти могу бити имплементирани декларативно у XML-у или програмски уз помоћ FragmentManager.
Декларативно (у XML-у):
<fragment
android:id="@+id/my_fragment"
android:name="com.example.MyFragment" // Пуна имена класе фрагмента
android:layout_width="match_parent"
android:layout_height="match_parent" />
- Фрагмент се додаје при креирању активити.
- Лако за коришћење за статичке распореде.
- Мање флексибилан за динамичке операције.
Програмирано (уз помоћ FragmentManager):
// Унутар метода активити, на пример, onCreate или при догађају
val fragmentManager = supportFragmentManager // За AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()
// Додавање фрагмента
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)
// Замењивање фрагмента (уклања постојећи у контејнеру и додаје нови)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)
// Уклањање фрагмента
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// ако (fragmentToRemove != null) {
// fragmentTransaction.remove(fragmentToRemove)
// }
// Додавање у Back Stack (омогућава кориснику да се врати на претходни фрагмент преко тастера "Назад")
fragmentTransaction.addToBackStack(null) // Стринг таг за бекстек (може бити null)
// Завршетак транзакције
fragmentTransaction.commit() // Асинхроно извршавање
// или
// fragmentTransaction.commitNow() // Синхроно извршавање
- Користи се
FragmentManagerза управљање фрагментима. FragmentTransactionсе користи за извршавање операција (додавање, уклањање, замена итд.).- Пружа већу флексибилност за динамичке промене UI током извршавања.
- Може управљати Back Stack-ом за навигацију.
Користећи контејнер:
За програмско додавање или замену фрагмената обично се користи контејнер у XML-у активити, на пример, FrameLayout или LinearLayout:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Затим у коду активити фрагмент се додаје или замењује унутар овог контејнера.
Важни аспекти:
- Животни циклус фрагмента је тесно повезан са животним циклусом активити.
- Fragment Manager управља животним циклусом и стањем фрагмената.
- Fragment Transaction се извршава атомски (или цела операција, или ниједна).
- При коришћењу Back Stack-а потребно је позвати
addToBackStack(). - За рад са фрагментима у AppCompatActivity користите
supportFragmentManager.