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.