Sobes.tech
Junior

Jak lze implementovat fragmenty v Activity?

sobes.tech AI

Odpověď od AI

Ve Fragmentu lze implementovat deklarativně v XML nebo programově pomocí FragmentManager.

Deklarativně (v XML):

<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment" // Plné jméno třídy fragmentu
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • Fragment je přidán při vytváření Activity.
  • Snadné použití pro statické rozvržení.
  • Méně flexibilní pro dynamické operace.

Programově (pomocí FragmentManager):

// Uvnitř metody Activity, například onCreate nebo při události
val fragmentManager = supportFragmentManager // Pro AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()

// Přidání fragmentu
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)

// Nahrazení fragmentu (odstraní stávající v kontejneru a přidá nový)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)

// Odstranění fragmentu
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// if (fragmentToRemove != null) {
//     fragmentTransaction.remove(fragmentToRemove)
// }

// Přidání do Back Stack (umožňuje uživateli vrátit se k předchozímu fragmentu pomocí tlačítka "Zpět")
fragmentTransaction.addToBackStack(null) // Řetězec tagu pro backstack (lze null)

// Ukončení transakce
fragmentTransaction.commit() // Asynchronní provedení
// nebo
// fragmentTransaction.commitNow() // Synchronní provedení
  • Používá se FragmentManager pro správu fragmentů.
  • FragmentTransaction se používá k provádění operací (přidání, odstranění, nahrazení atd.).
  • Nabízí větší flexibilitu pro dynamickou změnu UI během běhu.
  • Může spravovat Back Stack pro navigaci.

Použití kontejneru:

Pro programové přidání nebo výměnu fragmentů se obvykle používá kontejner v XML rozvržení Activity, například FrameLayout nebo LinearLayout:

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

Poté se v kódu Activity fragment přidá nebo nahradí uvnitř tohoto kontejneru.

Důležité aspekty:

  • Životní cyklus fragmentu je úzce spojen s životním cyklem Activity.
  • Fragment Manager spravuje životní cyklus a stav fragmentů.
  • Fragment Transaction se provádí atomicky (buď celá operace, nebo žádná).
  • Při použití Back Stack je nutné volat addToBackStack().
  • Pro práci s fragmenty v AppCompatActivity používejte supportFragmentManager.