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 (seaddToBackStackfoi chamado) e o seu ciclo de vida é suspenso (passam ao estadoPAUSED).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 |