entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

5votos

Regresar al fragment anterior al presionar Back en el teléfono

Que tal, quisiera personalizar el "Back Button" de mi aplicación que esta hecha con fragments, que al tocar en "Back" me regrese al fragment anterior y no me saque de la aplicación.
Eh investigado y si eh encontrado posibles soluciones, pero quisiera que alguien me explique un poco, eh visto que con esto se puede hacer:

@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    }
}

Me gustaría saber en primera instancia si este código realiza lo anterior descrito y si hay necesidad de aplicar algún método o función más antes de aplicarlo a mi código, muchas gracias por sus comentarios.

x4mp73r comentado Sep 30, 2015

Ya encontré una explicación:

Al parecer, solo se tiene que agregar cada Fragment al BackStack,( addToBackStack(null) ) así:

(En mi caso que uso un DrawerMenu)


 @Override
    public void onNavigationDrawerItemSelected(int position) {

FragmentManager fragmentManager = getSupportFragmentManager();

        switch (position) {
            case 0:
                fragmentManager.beginTransaction()
                  .replace(R.id.container, new Acerca()).addToBackStack(null)
                        .commit();
                    break;
           case 2:
               //Bla bla.... pueden seguir

Y se agrega lo siguiente:

@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    }
}

Y con eso queda a la perfección :)
...Hay que recordar que esto va en el MainActivity o como le hallan llamado a su actividad principal ;)

cobasESP comentado Oct 1, 2015

Antes de leer tu respuesta (Ya que no sabia eso del backStack), te iba a proponer crear un arraylist de fragments y que los vayas añadiendo según accedas a ellos, y en el back pressed que te coja el ultimo de la lista y te lo cambie, si no hay mas en la lista que se salga de la aplicación.
Probare ese método de dices tu, pinta bien

Peter comentado Oct 2, 2015

Por favor crea una respuesta con la solución y marcala como correcta.

Gracias.

SoCu comentado Ene 14

Editado

Creado una pregunta nueva.

Gracias.

Peter comentado Ene 14

@SoCu por favor abre una pregunta nueva.

Saludos.

1 Respuesta

3votos

x4mp73r Puntos13390

Ya encontré una explicación:

Al parecer, solo se tiene que agregar cada Fragment al BackStack,( addToBackStack(null) ) así:

(En mi caso que uso un DrawerMenu)

@Override
    public void onNavigationDrawerItemSelected(int position) {

FragmentManager fragmentManager = getSupportFragmentManager();

        switch (position) {
            case 0:
                fragmentManager.beginTransaction()
                  .replace(R.id.container, new Acerca()).addToBackStack(null)
                        .commit();
                    break;
           case 2:
               //Bla bla.... pueden seguir

Y se agrega lo siguiente:

@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    }
}

Y con eso queda a la perfección :)
...Hay que recordar que esto va en el MainActivity o como le hallan llamado a su actividad principal ;)

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

  • carlossevi ganó una medalla hace 9 horas

    Buena Respuesta - Recibió +1 votos en respuesta
  • matrixmar8 ganó una medalla hace 1 día

    Club de los 100 - Recibió un total de 100 puntos
  • matrixmar8 ganó una medalla hace 1 día

    Humano Verificado - Verificó su email
  • JoseVillalta ganó una medalla hace 2 días

    Club de los 100 - Recibió un total de 100 puntos
  • JoseVillalta ganó una medalla hace 2 días

    Humano Verificado - Verificó su email
  • Tammya ganó una medalla hace 2 días

    Club de los 100 - Recibió un total de 100 puntos
  • Tammya ganó una medalla hace 2 días

    Humano Verificado - Verificó su email
  • edu_botero ganó una medalla hace 2 días

    Fotogénico - Subió un avatar
  • edu_botero ganó una medalla hace 2 días

    Club de los 100 - Recibió un total de 100 puntos
...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta