Android – Implementando corretamente o botão voltar na ActionBar (Providing Up Navigation)

navigation up action bar

Todas as telas em seu aplicativo que não são a entrada principal para o seu aplicativo (a tela “home”) deve oferecer ao usuário uma maneira de navegar para a tela pai lógica na hierarquia do aplicativo pressionando o botão Up na Action Bar . Esta lição mostra como implementar adequadamente esse comportamento.

Os conceitos e princípios para a navegação acima são descritos em Designing Effective Navigation e em Navigation  guia de design. É muito importante ler esse conceito para aprender a forma correta da utilização do Navigation UP, tenha em mente que ele não é como o nosso botão de voltar do Sistema Operacional, o comportamento dele deve ser visto de outra maneira.

Resumindo, o botão up deve navegar entre as telas de forma hierárquica já o botão voltar em ordem cronológica inversa.

Exemplo: Continue reading

Android – Criando Menus de opções (Creating an Options Menu – onCreateOptionMenu)

options menu

 

O menu de opções é onde você deve incluir ações e outras opções que são relevantes para o contexto da atividade atual, como “Atualizar”, “Editar” e “Configurações”.

Para todos os tipos de menu o Android fornece um formato XML padrão para definir os itens. Em vez de construir um menu no código de sua atividade, você deve definir um menu e todos os seus itens em um XML. Você então infla o recurso menu (carregá-lo como um Menu de objeto) em sua atividade.

O recurso de menu em XML é uma boa prática por algumas razões:

  • É mais fácil de visualizar a estrutura do menu em XML.
  • Ele permite que você crie configurações do menu alternativas para diferentes versões da plataforma, tamanhos de tela e outras configurações, aproveitando os recursos do aplicativo.

Para definir o menu, crie um arquivo XML dentro do seu projeto na seguinte pasta res/menu/ (se a pasta menu não estiver criada, crie)

O XML de menu segue alguns padrões que podem ser observados com mais atenção AQUI (Developers – Menu). Abaixo segue um exemplo aonde vamos criar dois menus, um na ActionBar e o outro fora da ActionBar.

<?xml version="1.0" encoding="UTF-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_delete"
          android:icon="@android:drawable/ic_menu_delete"
          android:title="@string/menu_delete"
          android:showAsAction="ifRoom"/>
    <item android:id="@+id/menu_edit"
          android:icon="@android:drawable/ic_menu_edit"
          android:title="@string/menu_edit" />
</menu>

Como visto acima cada item é um menu, veja o que cada atributo de “item” pode fazer:

android:id A ID do recurso que é exclusivo para o item, o que permite que o aplicativo ser capaz de reconhecer o item quando o usuário seleciona-lo.

android:icon Uma referência a um drawable para usar como ícone do item.

android:title Uma referência a uma string para usar como título do item.

android:showAsAction Especifica quando e como este item deve aparecer como um item de ação na ActionBar.

Onde os itens em seu menu de opções aparecerá na tela depende da versão para a qual você desenvolveu sua aplicação.

Na API 10 ou inferior o menu de opções sempre aparecera no rodapé do layout.

API 10

API 10

Na API 11 ou superior você tem a opção de inseri-las na action bar, por padrão essa opção não é ativada, caso queira, marque a tag android:showAsAction=”ifRoom” no seu item.

API 11

API 11

 

Para especificar o menu de opções para uma atividade você deve substituir o método onCreateOptionsMenu() ao substitui-lo você deve inflar o layout desejado através da classe MenuInflate.

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

Para verificarmos qual item foi selecionado vamos substituir o método onOptionsItemSelected(MenuItem item):

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_edit:
                Toast.makeText(this, "MENU EDIT", Toast.LENGTH_LONG).show();
                return true;
            case R.id.menu_delete:
                Toast.makeText(this, "MENU DELETE", Toast.LENGTH_LONG).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

Veja o resultado:

Exemplo OptionsMenu

Exemplo OptionsMenu

 

Projeto de Exemplo:(AQUI) DropBox

 

Fonte da imagem: http://goo.gl/Enpf4P
Fonte: http://goo.gl/ZRiA