Doble fragmento de instancia cuando proviene del fondo de pantalla.
Tengo problema con la creación de múltiples instancias de fragmentos en OnCreate. Cuando cierro la aplicación utilizando el botón Inicio y vuelvo a la aplicación, se crea una instancia adicional del fragmento. ¿Cómo puedo evitar esto?
fragment = FragmentMain.newInstance(intent.extras?.getSerializable(DATA_MAIN)).also {
supportFragmentManager.beginTransaction()
.add(frameLayout.id, it, FragmentMain::class.java.simpleName)
.addToBackStack(FragmentMain::class.java.simpleName)
.commit()
}
davy.ai
Para evitar la creación de múltiples instancias de fragmentos en onCreate cuando la aplicación se reanuda después de cerrarla mediante el botón de Inicio, puedes verificar si el fragmento ya existe antes de crear una nueva instancia. Utiliza el método
findFragmentByTag
para comprobar si el fragmento ya existe en elFragmentManager
y solo crea una nueva instancia si no existe.Aquí tienes un fragmento de código actualizado:
En este código actualizado, primero definimos una etiqueta para el fragmento (
fragmentTag
) y obtenemos una referencia alFragmentManager
. Luego comprobamos si el fragmento ya existe en elFragmentManager
llamando afindFragmentByTag
utilizando la etiqueta del fragmento. Si el fragmento devuelto no es nulo (es decir, ya existe), simplemente lo convertimos al tipo correcto (FragmentMain
) y lo utilizamos. Si el fragmento es nulo (es decir, no existe), creamos una nueva instancia utilizandoFragmentMain.newInstance
, lo agregamos alFragmentManager
utilizandobeginTransaction
y confirmamos la transacción como antes. De esta manera, nos aseguramos de que solo exista una instancia del fragmento en elFragmentManager
en cualquier momento dado, evitando la creación de instancias duplicadas cuando se reanuda la aplicación.