Ich habe ein Tutorial der neuen Komponente NavigationView in der Support Design Library befolgt und kann diese Fehlermeldung nicht verarbeiten:
Error inflating class android.support.design.widget.NavigationView
Ich habe hier jede Problemumgehung versucht
Fehler bei der Verwendung von Elementen der Android Design Support Library
Es liegt jedoch weiterhin eine Fehlermeldung vor.
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'
}
Projekt 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>
Jede Hilfe wäre dankbar!
Bearbeiten - @ menu / drawer & @ menu / drawer_header & stacktrace hinzufügen
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 (nur ein Teil davon)
Es wurden drei Ausnahmen wie folgt ausgegeben: Alle weisen darauf hin, dass die Probleme durch die Zeile "setContentView (layout)" in layout.xml verursacht werden.
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
und XML posten@menu/drawer
?Antworten:
Tatsächlich geht es nicht darum
primarycolortext
, die Abhängigkeiten zu aktualisieren oder herunterzustufen. Dieses Problem tritt wahrscheinlich auf, wenn die Version Ihrerappcompat
Bibliothek und der Design-Support-Bibliothek nicht übereinstimmt.Beispiel für eine Übereinstimmungsbedingung
quelle
def supportVersion = '25.1.0' compile "com.android.support:appcompat-v7:$supportVersion" compile "com.android.support:design:$supportVersion"
support of version 26
. Ich benutze'com.android.support:appcompat-v7:26.1.0'
. Ist26.1.0
richtig?Ich hatte einen ähnlichen Fehler. Wenn ich benutze
funktioniert für mich, wenn ich die Themenelemente android: textColorPrimary und android: textColorSecondary entferne.
Versuchen Sie zunächst, mit einem sehr einfachen App-Thema zu arbeiten.
BEARBEITEN:
Dieses Tutorial wird helfen. Nach meinem Verständnis erfordert die Verwendung von "android: textColorPrimary" eine Mindest-API-Stufe 21. Wenn Sie dasselbe Tag ohne "android:" verwenden, wird die Design-Support-Bibliothek verwendet. Jedes Support-Bibliotheks-Widget versucht, das Element "textColorPrimary" anstelle von "android: textColorPrimary" zu finden. Wenn es das gleiche nicht findet, wird der oben genannte Fehler ausgegeben.
quelle
Ich hatte auch den gleichen Fehler. In meinem Fall befanden sich einige der Ressourcen nur in drawable-v21. Kopieren Sie diese Ressourcen auch in einen zeichnbaren Ordner. Dies löste das Problem für mich.
Dies ist das Hauptproblem.
quelle
vector
imv21
Ordner und nichts Entsprechendes im <21 Standardordner. Vielen Dank.Wenn Sie bereits migriert sind
androidx
, sollten Sie Ihre Layout-XML von ändernzu
quelle
Ich hatte den gleichen Fehler, den ich durch Hinzufügen
app:itemTextColor="@color/a_color"
zu meiner Navigationsansicht behoben habe :Sie können
android:textColorPrimary
undandroid:textColorSecondary
in Ihrem Thema weiterhin mit dieser Methode verwenden.quelle
Also habe ich versucht, diesen Fehler zu beheben. Und keiner hat für mich gearbeitet. Ich konnte keine Lösung finden. Szenario:
Ich wollte gerade ein
Navigation Drawer Project
Inside Android Studio 2.1.2 erstellen. Und als ich versuchte, das Standard-Android-Symbol in zu ändernnav_header_main.xml
, wurden einige seltsame Fehler angezeigt . Ich fand heraus, dass ich meinPNG
Logo in das fallen ließ...\app\src\main\res\drawable-21
. Wenn ich versuche, mein PNG-Logo in...\app\src\main\res\drawable
bam zu setzen! Alle seltsamen Fehler verschwinden.Im Folgenden sind einige Stapelverfolgungen aufgeführt, als ich PNG in einen
drawable-21
Ordner legte:Wie Sie sehen können, enthält die obige Stapelverfolgung Folgendes:
quelle
Ich habe das Downgrade in Gradle von gelöst
zu
Es scheint, dass ich immer Probleme bekomme, wenn ich eine Komponente von Android Studio aktualisiere. Ich werde es leid.
quelle
Keine der oben genannten Korrekturen hat bei mir funktioniert.
Was für mich funktionierte, veränderte sich
zu
Sie müssen Ihrer color.xml natürlich colorWhite hinzufügen
quelle
Die folgenden Schritte werden diesen Fehler sicher beheben.
Prost!!
quelle
Wie Parag Naik richtig erwähnt (und Lạng Hoàng erweitert), tritt das Problem auf, wenn textColorPrimary auf etwas anderes als eine Farbstatusliste gesetzt wird. Sie können also textColorPrimary als Statusliste festlegen. Es gibt ein Problem im Android Bug Tracker, dass colorPrimary eine Statusliste mit nur einer Farbe ist: https://code.google.com/p/android/issues/detail?id=172353
Also für dein Thema in styles.xml:
Und die eigentliche Datei primary_color_statelist.xml:
quelle
In meinem Fall hatte ich den gleichen Fehler, als ich die App auf dem Kitkat API 19-Versionsgerät ausführte. Ich habe das Problem herausgefunden. Ich hatte einige zeichnbare Ressourcen, die sich im Verzeichnis drawable-v21 befanden (das für Versionen von API 21 Lollipop verwendet wird). Ich habe nur die gleichen Ressourcen in den Ordner "Drawable" gelegt, um mit der Version unter API 21 zu arbeiten. Es funktioniert. Sie können es in das entsprechende Verzeichnis stellen
quelle
Für mich ist dieser Fehler oft aufgetreten,
Fehler beim Aufblasen der Klasse android.support.design.widget.NavigationView # 28 und # 29
Die Lösung, die für mich funktioniert, besteht darin, dass Sie Ihre Support-Design-Bibliothek und Ihre Support-Appcompat-Bibliothek abgleichen müssen.
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
Für mich müssen sie zusammenpassen. :) Für mich geht das!
quelle
Nur für diejenigen, die noch zu diesem Thema kommen. Ich habe das gleiche Problem, aber alle Lösungen hier funktionieren bei mir nicht.
Schauen Sie sich einfach die NavigationView-Klasse mit dem Hinweis von logcat an. Ich habe festgestellt, dass das Problem aus dieser Codezeile stammt:
Es scheint also mit itemTextColor verwandt zu sein, wie Aenur56 erwähnt. Also habe ich es mit der Lösung von Aenur56 versucht, aber es funktioniert nicht.
Werfen Sie einen Blick auf die Codezeile oben, ich stelle fest, dass es ColorStateList gibt. Also erstelle ich eine und setze sie dann für itemTextColor, dann funktioniert es.
Hoffe es hilft!
quelle
Keine der oben genannten Lösungen hat mir geholfen. Ich fand dies auf einer anderen Webseite und es funktionierte für mich - "In project.properties der Designbibliothek setzen Sie das Ziel auf 21 oder die höchste verfügbare, dann bereinigen Sie die Designbibliothek, appcomapt und Ihr Projekt und genießen Sie es."
Hoffe es wird helfen!
quelle
Stellen Sie sicher, dass sich Ihre Drawables für das Menü im richtigen Ordner befinden. Meiner wurde in drawablev21 abgelegt, daher verursachte dies einen Nullzeiger für die Ressource.
Es wurde behoben, dass meine Symbole in den Ordner "Drawables" verschoben wurden
quelle
Ich hatte das gleiche Problem nach dem Upgrade der Support-Bibliothek und keine der Antworten funktionierte für mich. Schließlich löste ich das Herunterladen der neuesten Version der Build-Tools und das Upgrade in build.gradle auf
buildToolsVersion "23.0.1"
quelle
Eine Sache, die Sie noch einmal überprüfen sollten, ist, dass Sie Ihr Thema in Ihrer AndroidManifest.xml-Datei korrekt angewendet haben. In meinem Fall hatte ich das Attribut android: theme weggelassen . Z.B:
quelle
BESSER ICH HABE UPGRADIERT
com.android.support:appcompat-v7:23.1.0
wie @Ton sagte Downgrade
compile 'com.android.support:design:23.1.0'
ABER warum nicht upgraden?
com.android.support:appcompat-v7:23.1.1
Das endgültige Upgrade hat für mich Spaß gemacht
Warum also eine ältere Bibliothek verwenden? Ich denke, es ist jetzt besser, sowohl Design als auch kompaktes Upgrade zu verwenden.
quelle
Ich hatte auch das gleiche Problem. Nachdem ich fast 3 Stunden lang nachgesehen hatte, stellte ich fest, dass das Problem in meiner Datei drawable_menu.xml lag. Es wurde falsch geschrieben: D.
quelle
Dieser Fehler kann aus den unten genannten Gründen verursacht werden.
Dieses Problem tritt wahrscheinlich auf, wenn die Version Ihrer Appcompat-Bibliothek und der Design-Support-Bibliothek nicht übereinstimmt. Beispiel für eine Übereinstimmungsbedingung
Wenn Ihre Themendatei in Stilen nur diese beiden enthält,
Fügen Sie dann auch ColorAccent hinzu. Es sollte ungefähr so aussehen.
quelle
Allgemeine Methode zur Lösung von Problemen wie
Error inflating class X
:Resources$NotFoundException
Folgendes geben:Resource ID
ist eigentlich eine exakte Ganzzahl aus der generierten R.java-Datei.0x7f0b0066
welche Datei auf die XML-Datei verweist, die nicht aufgeblasen werden konnte (gefunden).layout
diese Ressource nicht hat, aber einigelayout-XXX
jedoch.layout
.quelle
Es ist seltsam, aber sauberes Projekt und Wiederaufbauprojekt hat für mich funktioniert.
quelle
In meinem Fall hatte ich
und in der App-Konfiguration:
Also habe ich das XML geändert in:
quelle
Ich habe eine Lösung gefunden ... wenn Sie app: srcCompat verwendet haben, wechseln Sie zu android: src, diese Lösung hat bei mir funktioniert :)
quelle
Ich hatte diesen Fehler in Xamarin. Dies lag an einigen Dateien, die im Ordner drawable-v21 vorhanden waren . Also habe ich diese Dateien (wahrscheinlich Symboldateien ) in den Zeichenordner kopiert und der Fehler war verschwunden.
quelle