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.

Otras Preguntas y Respuestas


...

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

Conecta