Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Cómo agregar una acción hacia arriba

Tu app debería permitir que los usuarios encuentren fácilmente el camino de regreso a la pantalla principal de la app. Una forma sencilla de hacerlo es proporcionar un botón Arriba en la barra de la app para todas las actividades, excepto la principal. Cuando el usuario selecciona el botón Arriba, la app navega a la actividad principal.

En esta lección, se muestra cómo agregar un botón Arriba a una actividad al declarar el elemento principal de la actividad en el manifiesto y habilitar el botón Arriba de la barra de la app.

El componente de la arquitectura de navegación, actualmente en versión Alfa, es otro método para controlar la navegación en tu app. La API puede controlar la navegación hacia arriba desde la pantalla actual de tu app cuando el usuario hace clic en el botón Arriba. Para obtener más información, consulta El componente de la arquitectura de navegación.

Cómo declarar una actividad principal

Para admitir la funcionalidad hacia arriba de una actividad, debes declarar el elemento principal de la actividad. Puedes hacerlo en el manifiesto de la app, al establecer un atributo android:parentActivityName.

El atributo android:parentActivityName se incorporó en Android 4.1 (API nivel 16). Para admitir dispositivos con versiones anteriores de Android, define un par nombre-valor <meta-data>, donde el nombre es "android.support.PARENT_ACTIVITY" y el valor es el nombre de la actividad principal.

Por ejemplo, supongamos que tu app tiene una actividad principal llamada MainActivity y una sola actividad secundaria. En el siguiente código de manifiesto, se declaran ambas actividades y se especifica la relación principal/secundaria:

    <application ... >
        ...

        <!-- The main/home activity (it has no parent activity) -->

        <activity
            android:name="com.example.myfirstapp.MainActivity" ...>
            ...
        </activity>

        <!-- A child of the main activity -->
        <activity
            android:name="com.example.myfirstapp.MyChildActivity"
            android:label="@string/title_activity_child"
            android:parentActivityName="com.example.myfirstapp.MainActivity" >

            <!-- Parent activity meta-data to support 4.0 and lower -->
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.myfirstapp.MainActivity" />
        </activity>
    </application>
    

Cómo habilitar el botón Arriba

A fin de habilitar el botón Arriba para una actividad que tiene una actividad principal, llama al método setDisplayHomeAsUpEnabled() de la barra de la app. Por lo general, se hace al crear la actividad. Por ejemplo, el siguiente método onCreate() establece un elemento Toolbar como la barra de la app para MyChildActivity y luego habilita el botón Arriba de la barra de la app:

Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my_child)

        // my_child_toolbar is defined in the layout file
        setSupportActionBar(findViewById(R.id.my_child_toolbar))

        // Get a support ActionBar corresponding to this toolbar and enable the Up button
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
    }
    

Java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_child);

        // my_child_toolbar is defined in the layout file
        Toolbar myChildToolbar =
            (Toolbar) findViewById(R.id.my_child_toolbar);
        setSupportActionBar(myChildToolbar);

        // Get a support ActionBar corresponding to this toolbar
        ActionBar ab = getSupportActionBar();

        // Enable the Up button
        ab.setDisplayHomeAsUpEnabled(true);
    }
    

No es necesario que obtengas la acción hacia arriba en el método onOptionsItemSelected() de la actividad. En cambio, ese método debería llamar a su superclase, como se muestra en Cómo responder a acciones. El método de la superclase responde a la selección Arriba navegando a la actividad superior, como se especifica en el manifiesto de la app.