Android – Adicionando ícones na ActionBar

actionbar

A ActionBar é uma característica da janela para identificar a aplicação e fornecer ações ao usuários e modos de navegação. Você deve usar a ActionBar  na maioria das atividades que precisam apresentar ações do usuário ou uma navegação global, pois fornece uma interface consistente entre os aplicativos e o sistema.

Abaixo vamos mostrar como inserir algumas informações na actionBar e icones de ações, assim como mostrado na imagem acima.

  • Adicionar titulo e subtitulo:
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ActionBar actionBar = getActionBar();
        actionBar.setSubtitle("http://zarelli.wordpress.com");
        actionBar.setTitle("Exemplo - ActionBar");
    }
  • Para adicionar os icones devemos criar um xml de menu. Devemos criar uma pasta chamada menu/ dentro da pasta res/, nela, vamos adicionar o seguinte xml (menu_actionbar.xml):
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_anterior"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:icon="@android:drawable/ic_media_rew"
        android:title="Anterior"/>
    <item
        android:id="@+id/action_proximo"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:icon="@android:drawable/ic_media_ff"
        android:title="Proxímo"/>
</menu> 
  • Agora para adicionar o menu criado acima em nossa actionBar, devemos sobreescrever os seguintes métodos em nossa MainActivity:
    /**
     * Responsável em adicionar o menu a ActionBar
     *
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_actionbar, menu);
        return true;
    }

    /**
     * Responsável por definir as ações do menu
     *
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_proximo:
                Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT)
                        .show();
                break;
            case R.id.action_anterior:
                Toast.makeText(this, "Menu item 2 selected", Toast.LENGTH_SHORT)
                        .show();
                break;
        }

        return true;
    }

Nossa ActionBar está pronta para ser utilizada, lembre-se de utilizar a API do android superior ou igual a 11 e utilizar um theme, no caso deste exemplo estou utilizando o android:theme=”@android:style/Theme.Holo.Light”

Link do projeto: (AQUI)
Mais sobre o assunto e Fonte: http://goo.gl/l5mQA

Help DEV – Analista desenvolvedor Java / Android

http://helpdev.com.br/zarelli

6 thoughts on “Android – Adicionando ícones na ActionBar

      • Muito obrigado. Você saberia me dizer como faço para passar um valor double por intent. O meu não esta dando. SE Puder me ajudar.
        public class MyActivity extends ActionBarActivity {

        EditText editprecogas;
        EditText editprecoalc;
        EditText editmediagas;
        EditText editmediaalc;
        EditText editkmgas;
        EditText editkmalc;
        Button calcular;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        android.app.ActionBar actionBar = getActionBar();
        actionBar.setSubtitle(“De olho no Combustível”);
        actionBar.setTitle(“Axxon Software”);

        editprecogas = (EditText) findViewById(R.id.editText);
        editprecoalc = (EditText) findViewById(R.id.editText1);
        editmediagas = (EditText) findViewById(R.id.editText2);
        editmediaalc = (EditText) findViewById(R.id.editText3);
        editkmgas = (EditText) findViewById(R.id.editText4);
        editkmalc = (EditText) findViewById(R.id.editText5);
        calcular = (Button) findViewById(R.id.clickBtnDash);

        calcular.setOnClickListener(new Button.OnClickListener () {
        public void onClick (View view){

        //Convertendo as Strings para double
        double numeroUmValor = Double.parseDouble(editprecogas.getText().toString()); // Preço Gasolina
        double numeroDoisValor = Double.parseDouble(editprecoalc.getText().toString()); // Preço Alcool
        double numeroTresValor = Double.parseDouble(editmediagas.getText().toString()); // Media Gasolina
        double numeroQuatroValor = Double.parseDouble(editmediaalc.getText().toString()); // Media Alcool
        double numeroCincoValor = Double.parseDouble(editkmgas.getText().toString()); // Litro Gasolina
        double numeroSeisValor = Double.parseDouble(editkmalc.getText().toString()); // Litro Alcool

        //Fazer as contas
        final double totalcompragas = numeroUmValor * numeroCincoValor;
        final double totalkmgas = numeroTresValor * numeroCincoValor;

        Intent it = new Intent(MyActivity.this, Tela1.class);
        Bundle params = new Bundle();
        params.putDouble(“preço”,totalcompragas);
        params.putDouble(“km”,totalkmgas);
        it.putExtras(params);
        startActivity(it);

        }
        });
        }

        public class Tela1 extends ActionBarActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.resultactivity);
        android.app.ActionBar actionBar = getActionBar();
        actionBar.setSubtitle(“De olho no Combustível”);
        actionBar.setTitle(“Axxon Software”);

        Intent it = getIntent();
        Bundle params = it.getExtras();
        Double aDouble = params.getDouble(“”);
        EditText editText1 = (EditText) findViewById(R.id.editText1);
        editText1.setText(aDouble+””);

        }
        }

        • Na segunda tela voce está pegando o valor errado, pois você não passa a tag voce faz assim: params.getDouble(“”); o correto seria passar a tag do valor que voce quer assim: params.getDouble(“preco”);
          Ao dar o setText evite concatencar com vazio faça assim: editText1.setText(String.valueOf(aDouble));

          Também fiz um exemplo que eu mesmo testei:

          ============================================================
          public class MainActivity extends Activity {

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

          Double d1 = new Double(123132);
          Bundle bundle = new Bundle();
          bundle.putDouble(“d1″, d1);

          Intent it = new Intent(this, Activity2.class);
          it.putExtras(bundle);
          startActivity(it);
          }
          }
          ============================================================
          public class Activity2 extends Activity {
          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_activity2);
          Bundle bundle = getIntent().getExtras();

          double d1 = bundle.getDouble(“d1″);
          System.out.println(“-> “+d1);
          }
          ============================================================

          • Você é o cara. Muito deram muitas formas, m o seu funcionou perfeito. Agora, tambem daria de passara informação para a outra classe dando um Get and Set e chamando e set a textView na outra classe ?

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>