Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

14
respostas

Subpasta Menu não é exibida no diretório res

Boa noite, estou utilizando o Android 3.0.1 para fazer os cursos de mobile de Android da Alura.Mas acredito que esta versão tem uma maneira diferente para algumas funcionalidades.Não consigo visualizar a pasta Menu para usar o arquivo xml.Coloco o método inflate na minha activity mas não adianta se eu não conseguir mexer no xml da pasta Menu dentro de Resources.Como faço para resolver isso?Acredito que é por causa da versão do Android, pois a versão da videoaula do curso é diferente desta 3.0.1.

14 respostas

Assim meu Android Studio e ainda mais atual que o seu. E também tive esse mesmo problema. Como eu resolvi ? Eu adicionei esse diretório "menu" e criei os arquivos XML dentro manualmente. Não sei se e uma boa pratica atualmente fazer isso, mas resolveu.

Eu já fiz isso, mas tenho que usar a busca no find in path para encontrar os arquivos xml criados toda vez que abro o Android Studio,pois eles ficam ocultos depois que o Android Studio termina o processo de Gradle. Além deste problema apareceu outro.O arquivo menu_formulario.xml esta dando erro nestas linhas:

Linha 7)"item android:id="@+id/menu_dados_financiamento_ok"

Linha 10)"app:showAsAction="always"

Na tag item ele dá essa mensagem: "Menu item should specify a title"

E no app: ele exibe esta mensagem de erro: "Namespace app is not bound". Já cliquei em alt+enter e testei as opções que ele oferece, mas mesmo assim continua sem solução.

Oi Antonio, tudo bem ?

Cara consegue falar para gente como está seu arquivo ?

O arquivo XML da pasta Menu ficou assim:

<menu xmlns:android="http://schemas.android.com/apk/res/android“
        xmlns:app="
    xmlns:http="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/tools"
    xmlns:tools="http://schemas.android.com/apk/res/android"
    tools:context="freelancer.financialcalc.DadosFinanciamentoActivity">

    <item android:id="@+id/menu_dados_financiamento_ok"
          android:title="Ok"
          android:icon="@drawable/ic_confirmar"
          app:showAsAction="always" />


</menu>

Fala ai Antonio, tranquilo?

Cara tem alguns errinhos nesse arquivo, por isso não tá funcionando :(

Bom, vamos entender o que tem de errado, você acabou criando uma pancada de namespace, por isso acabou se perdendo no objetivo final.

xmlns:android="http://schemas.android.com/apk/res/android“
        xmlns:app="
    xmlns:http="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/tools"
    xmlns:tools="http://schemas.android.com/apk/res/android"

Onde o correto seria apenas termos dois, o app e o android:

xmlns:android="http://schemas.android.com/apk/res/android“
        xmlns:app="http://schemas.android.com/apk/res-auto"

Fazendo isso seu problema deve ser solucionado :D

Matheus boa noite.Fiz o que vc disse, mas agora o Android Studio apresenta outro problema, aí está:

Error:failed linking file resources. Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details Error:Execution failed for task ':app:processDebugResources'.

Failed to execute aapt

Peço que me ajude, isso está atrapalhando o andamento dos meus cursos de Android aqui no Alura. Aguardo resposta.Até mais.

Cara, consegue dar um clean no projeto ?

Eu recriei o projeto do zero e funciona perfeitamente até o momento que crio esse arquivo xml dentro da pasta menu.Também já dei clean e nada mudou.

Depois do processo de Gradle, ele também exibe estes erros: Error:error: attribute 'android“ xmlns:app=:icon' not found. Error:attribute 'android“ xmlns:app=:title' not found. Error:attribute 'android“ xmlns:app=:id' not found. Error:attribute 'android“ xmlns:app=:icon' not found. Error:error: attribute 'android“ xmlns:app=:title' not found. Error:error: attribute 'android“ xmlns:app=:id' not found.

Mas eu tenho certeza que copiei as pastas drawable

com as imagens dos icones confirmar e todos os outros necessários. Inclusive o código xml não apresenta nenhuma linha vermelha indicando que alguma coisa esta faltando ou algo foi digitado errado.Segue abaixo o código:

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

<item
    android:id="@+id/menu_dados_financiamento_ok"
    android:title="Ok"
    android:icon="@drawable/ic_confirmar">
</item>

Cara, você está definindo os namespaces errados :(

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/formulario_menu_salvar"
        android:title="Salvar"
        app:showAsAction="always"
        android:icon="@drawable/ic_confirmar"/>

</menu>

Professor Matheus, não adiantou de nada.Ainda continua sem exibir o item de menu na ActionBar.Inclusive vou postar aqui meu código da activity onde se encontra o inflate:

package br.com.alura.schedule;

import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.widget.ArrayAdapter; import android.widget.ListView;

public class ListaStudentsActivity extends AppCompatActivity {//Activity é uma tela //Toda vez q quiser ter uma tela, é preciso usar Activity @Override protected void onCreate(Bundle savedInstanceState) {//metodo onCreate é chamado pelo android //quando for criar a tela para ser exibida super.onCreate(savedInstanceState); setContentView(R.layout.activity_lista_students);// R é uma classe que é usada para se //referir a pasta res = resoucers;

    String[] alunos = {"Daniel","Ronaldo", "Jeferson", "Felipe"};
    ListView listaAlunos = (ListView) findViewById(R.id.lista_alunos);
    ArrayAdapter<String> adapter = new ArrayAdapter <String> (this, android.R.layout.simple_list_item_1, alunos);
    listaAlunos.setAdapter(adapter);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_formulario, menu);

    return super.onCreateOptionsMenu(menu);
}

}

Agora toda vez que tem o "R" de resources no código, o Android Studio exibe ele em vermelho como se estivesse alguma coisa errada, como é o caso dessas linhas:

setContentView(R.layout.activity_lista_students);

inflater.inflate(R.menu.menu_formulario, menu);

Ja experimentei usar o "R" minúsculo, por exemplo assim: (r.menu_formulario, menu) e não serviu.

Esta versão do 3.0.1 do Android Studio é muito problemática, eu não sei mais o que fazer pra resolver o problema de não exibir o item de menu. :(

Antonio, me fala onde você tá no curso, vou fazer o projeto até onde está e te dou o projeto.

Oi professor, eu tive que usar os apps no meu celular colocando o android:debbugable.Tava travando muito, criava varios projetos e nem todos rodavam, as vezes travava o emulador e algumas vezes nem abria.Por enquanto ta funcionando direito rodando no cel.Se souber qual emulador eu devo usar pode postar ai, pois o marshmallow que eu tinha instalado antes não pega funciona mais.