Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida no Ex. 6 da Aula 4 - Tela de Cadastro

Boa noite a todos. Eu criei o método onCreateOptionsMenu, coloquei todas as opções, mas na hora de rodas, nem no emulador e nem no meu celular, apareceram o menu.

public class AgendaDeAlunosActivity extends Activity {
 private ListView ListaAlunos;

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

        ListaAlunos = (ListView) findViewById(R.id.listaAlunos);
        final String[] alunos = {"Carlos", "Camila", "Pedro", "Alessandra"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, alunos);
        ListaAlunos.setAdapter(adapter);

        ListaAlunos.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> adapterView, View view, int posicao, long id) {

                Toast.makeText(AgendaDeAlunosActivity.this, "Aluno da posição " + posicao, Toast.LENGTH_SHORT).show();
            }
        });

       ListaAlunos.setOnItemLongClickListener(new OnItemLongClickListener() {
           @Override
           public boolean onItemLongClick(AdapterView<?> adapterView, View view, int posicao, long id) {
               Toast.makeText(AgendaDeAlunosActivity.this, "O aluno clicado foi o " + adapterView.getItemAtPosition(posicao), Toast.LENGTH_SHORT).show();
               return true;
           }
       });

        final Button botaoParaFormulario = (Button) findViewById(R.id.button);
        final Intent paraFormulario = new Intent(this, FormularioActivity.class);
        botaoParaFormulario.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(paraFormulario);
            }
        });

    }

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

        return super.onCreateOptionsMenu(menu);
    }
}

A xml do meu menu:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:title="@string/Add"
        android:id="@+id/menu_adicionar"
        android:icon="@drawable/ic_novo"
        android:showAsAction="always" />

    <item
        android:title="@string/map"
        android:id="@+id/menu_mapa"
        android:icon="@drawable/ic_mapa"
        android:showAsAction="always" />

   <item
       android:title="@string/Options"
       android:icon="@drawable/ic_opcoes"
       android:showAsAction="always" >
       <menu>

          <item
              android:title="@string/SendStudant"
              android:icon="@drawable/ic_enviar"
              android:id="@+id/menu_enviar"
              android:showAsAction="always"/>

          <item
              android:title="@string/ReceiveTest"
              android:icon="@drawable/ic_receber"
              android:id="@+id/menu_receber"
              android:showAsAction="always"/>

          <item
              android:title="@string/Preferences"
              android:icon="@drawable/ic_preferencias"
              android:id="@+id/menu_preferencia"
              android:showAsAction="always"/>
       </menu>
    </item>

</menu>

Quando eu troquei a herança de Activity para ActionBarActivity, até que apareceu, mas não do jeito que ficou no exemplo do exercício.

Só para constar, eu rodei na versão da API Lv 19, 21 e 23 e nada da ActionBar aparecer.

6 respostas

Okay, depois de pesquisar um pouco, eu descobri que o problema estava no tema escolhido para aplicação. Estava o Theme.AppCompat.Light e eu modifiquei para AppTheme.

Agora a questão é: Quando eu procuro por um tema eu só encontro temas com esse AppCompat que faz com que não apareça o menu e me deixou reduzido a apenas 1 tema. Como resolver isso?

estou com o mesmo problema, simplemente não aparece o MENU, ...

Alias, para completar o que diz o Sr. Bruno Nóbrega de Melo eu já instalei em 3 computadores, virtualizei os respectivos Android´s e nada de MENU ...

E, também refiz o projeto todo, na esperança de encontrar o problema... mais nada até então...

E, tentei também mudar de ANDROID, ...fiz alguns variações sem sucesso CLARO! rs :) ainda estou desejando ver o MENU...

Algum help, sobre o assunto.

Aguardando um socorrista para o assunto...

Att.

Fábio Bugarin de Mello

Olá Bruno,

No XML do seu menu você vai precisar alterar todas as linhas que estiverem com o atributo android:showAsAction para app:showAsAction. O atributo showAsAction não se encontra no namespace android que é definido na tag <menu>.

Depois de substituir as linhas, modifique a tag <menu> no começo do seu XML por:

<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

Desse modo estamos definindo o namespace app que contém o atributo que precisamos para mostrar os itens do menu na action bar.

Abraço!

solução!

Jeferson quando eu modifiquei o meu código para deixar desse forma que você indicou, os menus ficaram integrados, dentro daquele menu de 3 pontos padrão, ao invés de ficarem na ActionBar.

A modificação que eu fiz foi no arquivo style.xml meio que resolveu.

<resources>
    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    </style>
</resources>

O tema que estava definido anteriormente era o AppTheme, o que deixava por padrão o tema escuro. Eu li que as ´ActionBar´ é compatível apenas com o tema Holo e suas filhas, mas não sei bem como isso funciona.

Boa tarde!

Gostaria de saber porque o menu setado no xml como

android:showAsAction="always"

eu não consigo mostrar os itens do menu fora da opção "escondida".

André, o item que você está tentando acessar está dentro de um menu em outro item? Se for o caso, coloca ele fora desse menu extra que ele irá aparecer.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software