Adicionar uma ação com botão "Para cima"

Os usuários do seu app precisam conseguir voltar à tela principal com facilidade. Uma maneira simples de fazer isso é oferecer um botão Acima na barra do app para todas as atividades, exceto a principal. Quando o usuário seleciona o botão Para cima, o app navega para a atividade pai.

Esta lição mostra como adicionar um botão Para cima a uma atividade, declarando o pai dela no manifesto e ativando o botão Para cima da barra do app.

O componente de arquitetura de navegação, atualmente na versão Alfa, é outro método de processar a navegação no app. A API pode processar a navegação a partir da tela atual no app quando o usuário clica no botão para cima. Para saber mais, consulte Navigation Architecture Component.

Declarar uma atividade pai

Para que a funcionalidade "Para cima" possa ser usada em uma atividade, é preciso declarar o pai da atividade. Você pode fazer isso no manifesto do app, definindo um atributo android:parentActivityName.

O atributo android:parentActivityName foi introduzido no Android 4.1 (API de nível 16). Para oferecer compatibilidade com dispositivos com versões mais antigas do Android, defina um par de nome-valor <meta-data>, em que o nome é "android.support.PARENT_ACTIVITY" e o valor é o nome da atividade pai.

Por exemplo, suponha que seu aplicativo tenha uma atividade principal chamada MainActivity e uma única atividade filha. O código do manifesto a seguir declara as duas atividades e especifica o relacionamento pai/filha:

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

Ativar o botão "Para cima"

Para ativar o botão Para cima para uma atividade pai, chame o método setDisplayHomeAsUpEnabled() da barra do app. Normalmente, isso é feito quando a atividade é criada. Por exemplo, o seguinte método onCreate() define um Toolbar como a barra do app para MyChildActivity, em seguida, ativa o botão Para cima da barra do 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);
    }
    

Você não precisa capturar a ação no método onOptionsItemSelected() da atividade. Em vez disso, esse método precisa chamar a própria superclasse, conforme mostrado em Responder a ações. O método da superclasse responde à seleção de Para cima navegando para a atividade pai, conforme especificado no manifesto do app.