es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo mostrar un fragmento dentro de un contenedor de fragmento específico en Android

Cuando quiero cambiar el fragmento dependiendo del elemento seleccionado, utilizo:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();

Pero ahora quiero hacerlo de manera que pueda mostrar simplemente los diferentes fragmentos en lugar de crear nuevos cada vez que los vuelva a seleccionar, así que encontré .show en lugar de .replace, pero el problema con .show es que no puedo declarar dónde quiero que se muestre ese fragmento… o tal vez lo estoy haciendo mal:

getSupportFragmentManager().beginTransaction().show(fragment).commit();

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para mostrar diferentes fragmentos en lugar de crear nuevos cada vez que los volvemos a seleccionar, podemos usar el método .show. Sin embargo, el problema de utilizar .show es que no podemos declarar dónde queremos que se muestre ese fragmento, a diferencia del método replace.

    Para especificar dónde queremos que se muestre el fragmento, podemos combinar ambos métodos de la siguiente manera:

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    if(fragment.isAdded()){
        transaction.show(fragment);
    } else {
        transaction.add(R.id.fragment_container, fragment);
    }
    transaction.commit();
    

    Este código verifica si el fragmento ya está agregado y, si lo está, lo muestra. Si no está agregado, lo añade al fragment_container y realiza la transacción. De esta manera, podemos mostrar fragmentos existentes sin crear nuevos y asegurarnos de que se muestren donde queremos que estén.

Comments are closed.