Sobes.tech
Middle

V čem se liší metody add a replace?

sobes.tech AI

Odpověď od AI

Rozdíl mezi metodami add a replace při práci s fragmenty je následující:

  • add: Přidá nový fragment nad stávající. Předchozí fragmenty zůstanou ve zásobníku (pokud bylo voláno addToBackStack) a jejich životní cyklus je pozastaven (PAUSED).
  • replace: Odstraní předchozí fragment z kontejneru a přidá nový na jeho místo. Pokud byl předchozí fragment ve zásobníku, při návratu bude znovu vytvořen.

Příklad použití add:

supportFragmentManager.beginTransaction()
    .add(R.id.fragment_container, NewFragment())
    .addToBackStack(null)
    .commit()

Příklad použití replace:

supportFragmentManager.beginTransaction()
    .replace(R.id.fragment_container, NewFragment())
    .addToBackStack(null)
    .commit()

Hlavní rozdíly lze shrnout v tabulce:

Vlastnost add replace
Viditelnost Nový fragment překrývá starý Nový fragment nahrazuje starý
Stav předchozího Je pozastaven (PAUSED) Je odstraněn z kontejneru, při návratu je znovu vytvořen
Zpětná zásobník Předchozí fragment zůstává ve zásobníku Předchozí fragment je odstraněn z kontejneru, ale může být ve zásobníku
Výkon Může být méně výkonný s mnoha fragmenty Obecně výkonnější při častých změnách fragmentů