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.

1voto

x4mp73r comentado

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 ;)

1voto

cobasESP comentado

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

0voto

Peter comentado

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

Gracias.

0voto

SoCu comentado

Editado

Creado una pregunta nueva.

Gracias.

0voto

Peter comentado

@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

  • Freda0370183 ganó una medalla hace 6 horas

    Club de los 100 - Recibió un total de 100 puntos
  • NilaPilgrim4 ganó una medalla hace 14 horas

    Humano Verificado - Verificó su email
  • ErwinImhoff1 ganó una medalla hace 1 día

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

    Buen Comentario - Comment received +2 upvote
  • FelipeMedel ganó una medalla hace 1 día

    Renovador - Recibió medalla Buena Respuesta en res…
  • FelipeMedel ganó una medalla hace 1 día

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

    Buen Comentario - Comment received +2 upvote
  • FelipeMedel ganó una medalla hace 1 día

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

    Veterano - Primera visita hace más de 180 días
  • EllPanda ganó una medalla hace 1 día

    Regular - Primera visita hace más de 90 días
...

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

Conecta