Sobes.tech
Middle

¿En qué se diferencian los métodos add y replace?

sobes.tech AI

Respuesta de la IA

La diferencia entre los métodos add y replace al trabajar con fragmentos es la siguiente:

  • add: Añade un nuevo fragmento sobre los existentes. Los fragmentos anteriores permanecen en la pila (si se llamó a addToBackStack) y su ciclo de vida se suspende (pasan a estado PAUSED).
  • replace: Elimina el fragmento anterior del contenedor y añade uno nuevo en su lugar. Si el fragmento anterior estaba en la pila, se creará de nuevo al volver.

Ejemplo de uso de add:

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

Ejemplo de uso de replace:

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

Las diferencias principales se pueden resumir en la siguiente tabla:

Característica add replace
Visibilidad El nuevo fragmento se superpone El nuevo fragmento reemplaza al anterior
Estado del anterior Se suspende (PAUSED) Se elimina del contenedor, se crea de nuevo al volver
Pila de retroceso El fragmento anterior permanece en la pila El fragmento anterior se elimina del contenedor, pero puede estar en la pila
Rendimiento Puede ser menos eficiente con muchos fragmentos Generalmente más eficiente con cambios frecuentes de fragmentos