Segui um tutorial do novo componente NavigationView na Support Design Library e não consigo ler esta mensagem de erro:
Error inflating class android.support.design.widget.NavigationView
Eu tentei todas as soluções alternativas aqui
Erro ao usar qualquer elemento da Android Design Support Library
mas a mensagem de erro ainda existe.
xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<include layout="@layout/toolbar" android:id="@+id/mainToolBar" />
<fragment android:name="com.ais.cherry.fragment.LoginFragment"
android:id="@+id/loginFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/mainToolBar" />
<fragment android:name="com.ais.cherry.fragment.WaterFallFragment"
android:id="@+id/mainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/mainToolBar" />
<fragment android:name="com.ais.cherry.fragment.SearchFragment"
android:id="@+id/searchFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/mainToolBar" />
<fragment android:name="com.ais.cherry.fragment.ChatMainFragment"
android:id="@+id/chatMainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/mainToolBar" />
<fragment android:name="com.ais.cherry.fragment.ProfileFragment"
android:id="@+id/profileFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/mainToolBar" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white"
app:itemTextColor="#212121"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>
build.gradle
buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.ais.cherry"
minSdkVersion 16
targetSdkVersion 22
multiDexEnabled true
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
}
dependencies {
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:support-v4:22.2.0'
compile 'com.android.support:design:22.2.0'
compile 'com.android.support:recyclerview-v7:22.2.0'
}
Projeto build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
styles.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base">
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:actionModeStyle">@style/AppTheme.ActionModeStyle</item>
<item name="android:windowActionBar">false</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowNoTitle">true</item>
<!-- Support library compatibility -->
<item name="windowActionBarOverlay">true</item>
<!-- ActionBar color -->
<item name="colorPrimary">#E91E63</item>
<!-- Status bar color -->
<item name="colorPrimaryDark">#C2185B</item>
<!-- Window color -->
<item name="android:windowBackground">@color/white</item>
<!-- ActionBar title text -->
<item name="android:titleTextStyle">@style/AppTheme.MyActionBarTitleText</item>
<item name="colorAccent">#9E9E9E</item>
<item name="drawerArrowStyle">@style/AppTheme.MyDrawerArrowStyle</item>
<!-- color for actionMenu-->
<item name="actionMenuTextColor">#FFFFFF</item>
<item name="android:actionMenuTextColor">#FFFFFF</item>
<!-- android:textColorSecondary is the color of the menu
overflow icon (three vertical dots) -->
<item name="android:textColorPrimary">#212121</item>
<item name="android:textColorSecondary">#FFFFFF</item>
<!--Navigation bar color-->
<item name="android:navigationBarColor">#E91E63</item>
<!--Status bar color-->
<item name="android:statusBarColor">#C2185B</item>
</style>
Qualquer ajuda seria apreciada!
Editar - adicione @ menu / drawer & @ menu / drawer_header e stacktrace
drawer.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_first_fragment"
android:icon="@drawable/home_view"
android:checked="true"
android:title="@string/main"/>
<item
android:id="@+id/nav_second_fragment"
android:icon="@drawable/comment_view"
android:title="@string/chat"/>
<item
android:id="@+id/nav_third_fragment"
android:icon="@drawable/user_view"
android:title="@string/profile"/>
<item android:title="@string/search">
<menu>
<item
android:title="@string/clothes"/>
<item
android:title="@string/pants"/>
</menu>
</item>
</group>
</menu>
drawer_header.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="192dp"
android:background="?attr/colorPrimaryDark"
android:padding="16dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:gravity="bottom">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/title"
android:textColor="@android:color/white"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>
</LinearLayout>
StackTrace (apenas parte deles)
Ele lançou três exceções como abaixo: todos apontam que os problemas são causados pela linha de "setContentView (layout)" em layout.xml.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ais.cherry/com.ais.cherry.activity.FirstActivity}: android.view.InflateException: Binary XML file line #32: Error inflating class android.support.design.widget.NavigationView
Caused by: android.view.InflateException: Binary XML file line #32: Error inflating class android.support.design.widget.NavigationView
Caused by: java.lang.reflect.InvocationTargetException
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
@layout/drawer_header
e o xml@menu/drawer
?Respostas:
Na verdade, não se trata de
primarycolortext
atualizar ou rebaixar as dependências. Esse problema provavelmente ocorrerá quando a versão de suaappcompat
biblioteca e a biblioteca de suporte de design não corresponderem.Exemplo de condição de correspondência
fonte
def supportVersion = '25.1.0' compile "com.android.support:appcompat-v7:$supportVersion" compile "com.android.support:design:$supportVersion"
support of version 26
. Estou usando'com.android.support:appcompat-v7:26.1.0'
. Está26.1.0
correto?Eu tive um erro semelhante. Quando eu uso
funciona para mim quando eu removo os itens de tema android: textColorPrimary e android: textColorSecondary.
Experimente trabalhar com um tema de aplicativo muito simples para começar.
EDITAR:
Este tutorial ajudará. Meu entendimento é que usar "android: textColorPrimary" requer um nível mínimo de API 21. Usar a mesma tag sem "android:" usa a biblioteca de suporte de design. Qualquer widget da biblioteca de suporte tentará encontrar o item "textColorPrimary" em vez de "android: textColorPrimary" e, se não conseguir encontrar o mesmo, gerará o erro mencionado acima.
fonte
Eu também tive o mesmo erro. No meu caso, alguns dos recursos estavam apenas no drawable-v21. Copie esses recursos para a pasta drawable também. Isso resolveu o problema para mim.
Este é o principal problema.
fonte
vector
nav21
pasta e nada correspondente na pasta padrão <21. Obrigado.Se você já migrou para
androidx
, você deve alterar seu layout xml depara
fonte
Eu tive o mesmo erro, resolvi adicionando
app:itemTextColor="@color/a_color"
à minha visualização de navegação:Você ainda pode usar
android:textColorPrimary
eandroid:textColorSecondary
em seu tema com este método.fonte
Bem, então eu estava tentando consertar esse erro. E nenhum funcionou para mim. Não fui capaz de descobrir a solução. Cenário:
Eu ia fazer um por
Navigation Drawer Project
dentro do Android Studio 2.1.2 E quando tento alterar o ícone padrão do Android nonav_header_main.xml
, estava recebendo alguns erros estranhos. Eu descobri que estava colocando meuPNG
logotipo no...\app\src\main\res\drawable-21
. Quando tento colocar meu logotipo PNG no...\app\src\main\res\drawable
bam! Todos os erros estranhos desaparecem.A seguir estão alguns rastreamentos de pilha quando coloquei o PNG na
drawable-21
pasta:Como você pode ver, o Stack Trace acima inclui:
fonte
Eu resolvi isso fazendo downgrade no gradle de
para
Parece que sempre tenho problemas quando atualizo qualquer componente do Android Studio. Cansado disso.
fonte
Nenhuma das correções acima funcionou para mim.
O que funcionou para mim estava mudando
para
Obviamente, você precisa adicionar colorWhite ao seu colors.xml
fonte
Seguir as etapas abaixo certamente removerá esse erro.
Felicidades!!
fonte
Como Parag Naik menciona corretamente (e Lạng Hoàng expande), o problema surge ao definir textColorPrimary para algo diferente de uma lista de estados de cores. Portanto, você pode definir textColorPrimary como uma lista de estados. Há um problema no rastreador de bug do Android sobre o colorPrimary ser uma lista de estados com apenas uma cor: https://code.google.com/p/android/issues/detail?id=172353
Portanto, para o seu tema em styles.xml:
E o arquivo primary_color_statelist.xml real:
fonte
No meu caso, tive o mesmo erro ao executar o aplicativo no dispositivo da versão API 19 do kitkat. Eu descobri o problema; Eu tinha alguns recursos de drawable que estavam no diretório drawable-v21 (que é usado para versões do API 21 Lollipop). Acabei de colocar os mesmos recursos na pasta "Drawable" para funcionar com a versão abaixo da API 21. Funciona. Você pode colocá-lo no diretório correspondente
fonte
Para mim, encontrei esse erro muitas vezes,
Erro ao inflar a classe android.support.design.widget.NavigationView # 28 e # 29
A solução que funciona para mim é que você deve combinar sua biblioteca de design de suporte e sua biblioteca appcompat de suporte.
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
Para mim, eles devem corresponder. :) Funciona para mim!
fonte
Só para quem ainda chega a esse problema. Eu tenho o mesmo problema, mas todas as soluções aqui não funcionam para mim.
Basta dar uma olhada na classe NavigationView com a sugestão do logcat, descobri que o problema vem desta linha de código:
Portanto, parece relacionado a itemTextColor como Aenur56 mencionou. Tentei a solução do Aenur56, mas não funcionou.
Dê uma olhada na linha de código acima, noto que existe ColorStateList. Então, eu crio um e configurei para itemTextColor e funcione.
Espero que ajude!
fonte
Nenhuma das soluções acima me ajudou. Eu encontrei isso em alguma outra página da web e funcionou para mim - "Em project.properties of design library, defina a meta para 21 ou mais disponível, limpe a biblioteca de design, appcomapt e seu projeto e aproveite"
Espero que ajude!
fonte
Certifique-se de que seus drawables para o menu estão na pasta correta, o meu foi colocado em drawablev21, portanto, isso causou um nullpointer para o recurso.
Corrigido o problema de mover meus ícones para a pasta drawables
fonte
Tive o mesmo problema depois de atualizar a biblioteca de suporte e nenhuma das respostas funcionou para mim. Finalmente resolvi baixar a versão mais recente das ferramentas de construção e atualizar no build.gradle para
buildToolsVersion "23.0.1"
fonte
Uma coisa a verificar é se você aplicou o tema corretamente no arquivo AndroidManifest.xml. No meu caso, omiti o atributo android: theme . Por exemplo:
fonte
MELHOR FUI ATUALIZADO
com.android.support:appcompat-v7:23.1.0
como @Ton disse downgrade
compile 'com.android.support:design:23.1.0'
MAS, por que não atualizar
com.android.support:appcompat-v7:23.1.1
A atualização final funcionou para mim, aproveite
Então, por que usar uma biblioteca mais antiga. Acho que agora é melhor usar o design e compacto atualizado.
fonte
Eu também estava tendo esse mesmo problema, depois de olhar quase 3 horas descobri que o problema estava no meu arquivo drawable_menu.xml, ele estava escrito incorretamente: D
fonte
Este erro pode ser causado pelos motivos mencionados abaixo.
Esse problema provavelmente ocorrerá quando a versão de sua biblioteca appcompat e biblioteca de suporte de design não corresponderem. Exemplo de condição de correspondência
Se o seu arquivo de tema em estilos tiver apenas esses dois,
em seguida, adicione ColorAccent também. Deve ser parecido com isso.
fonte
Maneira genérica de resolver problemas como
Error inflating class X
:Resources$NotFoundException
assim:Resource ID
é na verdade um inteiro exato do arquivo R.java gerado.0x7f0b0066
qual apontará para o arquivo xml que não pôde ser inflado (encontrado).layout
ocorre porque o diretório não tem esse recurso, mas algunslayout-XXX
têm.layout
.fonte
É estranho, mas o projeto limpo e o projeto de reconstrução funcionaram para mim.
fonte
No meu caso eu tive
e na configuração do aplicativo:
Então, mudei o XML para:
fonte
Eu encontrei a solução ... se você usou app: srcCompat, mude para android: src essa solução funcionou para mim :)
fonte
Eu estava enfrentando esse erro no Xamarin. Isso ocorreu devido a alguns arquivos que estavam presentes na pasta drawable-v21 . Então, copiei esses arquivos (provavelmente arquivos de ícone) para a pasta drawable e o erro desapareceu.
fonte