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.

En la parte de atrás, vuelve a la primera actividad y no a su actividad principal.

Tengo una actividad A en la cual, cuando el usuario presiona un botón, se abre la actividad B.
Lo hago utilizando:

startActivity(intent)
finish()

El usuario en la actividad B tiene la opción de hacer clic en un elemento y navegar a la actividad C o presionar el botón de retroceso.
Problema:
Cuando presiono el botón de retroceso, no voy a la actividad A, sino a su actividad principal.
¿Cómo puedo asegurarme de que al navegar hacia atrás vaya a la actividad A, mientras que si el usuario hace clic en un elemento en la actividad B, termine en la actividad C?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asegurarnos de que al navegar hacia atrás el usuario vaya a la Actividad A y si el usuario hace clic en un elemento en la Actividad B, termine en la Actividad C, debemos modificar el flujo de navegación de nuestra aplicación. Podemos lograr esto mediante la implementación de los siguientes pasos:

    1. En el archivo AndroidManifest.xml, agregue el atributo parent activity en el elemento Activity B:
    <activity android:name=".ActivityB" android:parentactivityname=".ActivityA">
       <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".ActivityA"></meta-data>
    </activity>
    

    Esto define que la Actividad A es la actividad padre de la Actividad B.

    1. Anula el método onBackPressed() en la Actividad B y agrega un intent para navegar hacia la Actividad C:
    @Override
    public void onBackPressed() {
        Intent intent = new Intent(ActivityB.this, ActivityC.class);
        startActivity(intent);
        finish();
    }
    

    Esto significa que cuando el usuario presione el botón de retroceso en la Actividad B, se dirigirá a la Actividad C.

    1. En el método onOptionsItemSelected() en la Actividad B, agrega un intent para navegar hacia la Actividad C:
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_go_to_c) {
            Intent intent = new Intent(ActivityB.this, ActivityC.class);
            startActivity(intent);
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    

    Esto permite al usuario hacer clic en un botón o elemento de menú en la Actividad B para navegar hacia la Actividad C.

    Con estas modificaciones, el flujo de navegación de la aplicación será el siguiente:

    • Cuando el usuario presione el botón en la Actividad A, se dirigirá a la Actividad B.
    • Cuando el usuario presione el botón de retroceso en la Actividad B, se dirigirá a la Actividad A.
    • Cuando el usuario haga clic en un elemento o botón en la Actividad B, se dirigirá a la Actividad C.

Comments are closed.