Sobes.tech
Middle

Qual é a diferença entre os métodos add e replace?

sobes.tech IA

Resposta da IA

A diferença entre os métodos add e replace ao trabalhar com fragmentos é a seguinte:

  • add: Adiciona um novo fragmento por cima dos existentes. Os fragmentos anteriores permanecem na pilha (se addToBackStack foi chamado) e o seu ciclo de vida é suspenso (passam ao estado PAUSED).
  • replace: Remove o fragmento anterior do contêiner e adiciona um novo no seu lugar. Se o fragmento anterior estava na pilha, será recriado ao retornar.

Exemplo de uso de add:

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

Exemplo de uso de replace:

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

As principais diferenças podem ser resumidas na tabela seguinte:

Característica add replace
Visibilidade O novo fragmento sobrepõe-se ao anterior O novo fragmento substitui o anterior
Estado do anterior É suspenso (PAUSED) É removido do contêiner, recriado ao retornar
Pilha de retrocesso O fragmento anterior permanece na pilha O fragmento anterior é removido do contêiner, mas pode estar na pilha
Desempenho Pode ser menos eficiente com muitos fragmentos Geralmente mais eficiente com mudanças frequentes de fragmentos