膨胀类android.support.design.widget.NavigationView时出错


87

我遵循了支持设计库中新组件NavigationView的教程,无法通过以下错误消息获取信息:

Error inflating class android.support.design.widget.NavigationView

我在这里尝试了所有解决方法

使用任何Android设计支持库元素时发生错误

但是错误消息仍然存在。

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'
}

项目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>

任何帮助,将不胜感激!

编辑-添加@ menu / drawer和@ menu / drawer_header&stacktrace

抽屉.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>

cabinet_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(仅一部分)

它抛出了三个异常,如下所示:所有这些都指出问题是由layout.xml中的“ setContentView(layout)”这一行引起的。

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

您还可以发布xml@layout/drawer_header和xml@menu/drawer吗?
TheoK 2015年

另外,请发布整个堆栈跟踪。
CommonsWare 2015年

@TheoK我编辑我的问题〜谢谢
pptang

好吧,它找不到您的资源之一。我不知道哪个。
CommonsWare 2015年

我遇到了这个问题,因为我重构了一些代码。基本上,我将名为parent的变量重构为parentFragment更加准确,并且android studio也在styles.xml中进行了更改。不得不将样式重新设置为parent =“ <whatever-base-class>”,它再次起作用。
赛富尔·拉赫曼·莫辛

Answers:


83

实际上,与primarycolortext升级,降级依赖关系appcompat无关。当库和设计支持库的版本不匹配时,很可能会发生此问题。

匹配条件示例

compile 'com.android.support:appcompat-v7:23.1.1' // appcompat library
compile 'com.android.support:design:23.1.1'       //design support library

您能解释一下如何为像我这样的新手检测到此问题
吗?)

如果您始终在app / build.gradle中为诸如此类的事情声明变量,则可以防止自己忘记更改,例如:def supportVersion = '25.1.0' compile "com.android.support:appcompat-v7:$supportVersion" compile "com.android.support:design:$supportVersion"
成熟

3
我使用的两个库都是相同的,但仍然收到相同的错误。检查下面的代码编译“com.android.support:appcompat-v7:23.4.0”编译“com.android.support:design:23.4.0”
玛雅Mohite

1
我应该用support of version 26。我正在使用'com.android.support:appcompat-v7:26.1.0'。是对的26.1.0
Nimmagadda Gowtham '17

Gradle 4.1遇到compileSdkVersion 25 buildToolsVersion '26 .0.2'和编译'com.android.support:appcompat-v7:23.0.0'时出错,编译'com.android.support:design:23.0.0' .support:support-v4:23.0.0'解决了以下更改编译'com.android.support:appcompat-v7:25.0.0'编译'com.android.support:design:25.0.0'编译'com.android .support:support-v4:25.0.0'–
iambegineer

45

我有类似的错误。当我使用

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">

    <item name="colorPrimary">#673AB7</item>
    <item name="colorPrimaryDark">#512DA8</item>
    <item name="colorAccent">#00BCD4</item>
    <item name="android:textColorPrimary">#212121</item>
    <item name="android:textColorSecondary">#727272</item>

</style>

当我删除android:textColorPrimary和android:textColorSecondary主题项时,对我有用。

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">

    <item name="colorPrimary">#673AB7</item>
    <item name="colorPrimaryDark">#512DA8</item>
    <item name="colorAccent">#00BCD4</item>

</style>

尝试从一个非常简单的App主题开始。

编辑:

教程会有所帮助。我的理解是,使用“ android:textColorPrimary”需要最低的api级别21。使用不带“ android:”的相同标签将使用设计支持库。任何支持库窗口小部件都将尝试查找“ textColorPrimary”项而不是“ android:textColorPrimary”,并且如果找不到相同的项,则会引发上述错误。


谢谢,它就像一个魅力!但是您知道为什么我们应该删除这两个属性吗?
pptang

4
我从来没有这两个属性,并且仍然遇到相同的错误。有任何想法吗?
Shubham Chaudhary

1
对我来说,即使我在values-v21 / styles.xml中添加android:textColorPrimary,它仍然会失败
大卫

1
请在下面考虑Balman Rawat给出的答案。就我而言,我必须同时应用两个答案。
NewestStackOverflowUser 2016年

@Parag Naik您保存了我的一周,谢谢:)我爱这个社区。
YasinKaçmaz16年

41

我也有同样的错误。就我而言,某些资源仅在drawable-v21中。也将那些资源复制到drawable文件夹。这为我解决了这个问题。

Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0 

这是主要问题。


2
对。我也是。有使用被拉伸的XML文件vector中的v21文件夹,并没有在<21标准文件夹对应。谢谢。
eoinzy '16

1
点上..我在drawable-xx中添加了图像,但未在drawable中添加。就是这个问题
Rahul Hawge

1
非常感谢我的selector.xml和其他xml文件也在那里。我将其复制并保存问题
MohammadL

27

如果您已经迁移到androidx,则应从以下位置更改布局xml

<android.support.design.widget.NavigationView ... />

<com.google.android.material.navigation.NavigationView ... />

15

我有同样的错误,我通过添加app:itemTextColor="@color/a_color"到导航视图中来解决了:

<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="left"
    app:headerLayout="@layout/layout_drawer_header"
    app:menu="@menu/drawer_menu"
    app:itemTextColor="@color/primary"/>

您仍然可以通过此方法在主题中使用android:textColorPrimaryandroid:textColorSecondary


我从这里尝试过您的解决方法,但仍然收到相同的错误消息。还是要谢谢你的帮助。
pptang 2015年

15

好吧,所以我试图解决此错误。没有一个对我有用。我无法解决。 场景:

我只是要Navigation Drawer Project在Android Studio 2.1.2中制作一个,而当我尝试更改默认的Android图标时,nav_header_main.xml出现了一些奇怪的错误。我发现自己将PNG徽标放到了...\app\src\main\res\drawable-21。当我尝试将我的PNG徽标放到...\app\src\main\res\drawablebam中时!所有奇怪的错误都会消失。

以下是我将PNG放入drawable-21文件夹时的一些堆栈跟踪:

08-17 17:29:56.237 6644-6678/myAppName  E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.Restarter.getActivities
08-17 17:30:01.674 6644-6644/myAppName E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         java.lang.RuntimeException: Unable to start activity ComponentInfo{myAppName.MainActivity}: android.view.InflateException: Binary XML file line #16: Error inflating class <unknown>
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2372)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424)
                                                                             at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3956)
                                                                             at android.app.ActivityThread.access$700(ActivityThread.java:169)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:107)
                                                                             at android.os.Looper.loop(Looper.java:194)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5433)
                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:525)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:924)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691)
                                                                             at dalvik.system.NativeStart.main(Native Method)
                                                                          Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class <unknown>
                                                                             at android.view.LayoutInflater.createView(LayoutInflater.java:613)
                                                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                                                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                                             at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                             at edu.uswat.fwd82.findmedoc.MainActivity.onCreate(MainActivity.java:22)
                                                                             at android.app.Activity.performCreate(Activity.java:5179)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2336)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3956at android.app.ActivityThread.access$700(ActivityThread.java:169at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394at android.os.Handler.dispatchMessage(Handler.java:107at android.os.Looper.loop(Looper.java:194at android.app.ActivityThread.main(ActivityThread.java:5433at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:525at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:924at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691at dalvik.system.NativeStart.main(Native Method) 
                                                                          Caused by: java.lang.reflect.InvocationTargetException
                                                                             at java.lang.reflect.Constructor.constructNative(Native Method)
                                                                             at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
                                                                             at android.view.LayoutInflater.createView(LayoutInflater.java:587)
                                                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687at android.view.LayoutInflater.rInflate(LayoutInflater.java:746at android.view.LayoutInflater.inflate(LayoutInflater.java:489at android.view.LayoutInflater.inflate(LayoutInflater.java:396at android.view.LayoutInflater.inflate(LayoutInflater.java:352at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140at edu.uswat.fwd82.findmedoc.MainActivity.onCreate(MainActivity.java:22at android.app.Activity.performCreate(Activity.java:5179at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2336at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3956at android.app.ActivityThread.access$700(ActivityThread.java:169at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394at android.os.Handler.dispatchMessage(Handler.java:107at android.os.Looper.loop(Looper.java:194at android.app.ActivityThread.main(ActivityThread.java:5433at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:525at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:924at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691at dalvik.system.NativeStart.main(Native Method) 
                                                                          Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class ImageView
                                                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.support.design.internal.NavigationMenuPresenter.inflateHeaderView(NavigationMenuPresenter.java:189)
at android.support.design.widget.NavigationView.inflateHeaderView(NavigationView.java:262)
at android.support.design.widget.NavigationView.<init>(NavigationView.java:173)
at android.support.design.widget.NavigationView.<init>(NavigationView.java:95)
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:417at android.view.LayoutInflater.createView(LayoutInflater.java:587at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687at android.view.LayoutInflater.rInflate(LayoutInflater.java:746at android.view.LayoutInflater.inflate(LayoutInflater.java:489at android.view.LayoutInflater.inflate(LayoutInflater.java:396at android.view.LayoutInflater.inflate(LayoutInflater.java:352at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140at edu.uswat.fwd82.findmedoc.MainActivity.onCreate(MainActivity.java:22at android.app.Activity.performCreate(Activity.java:5179at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2336at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3956at android.app.ActivityThread.access$700(ActivityThread.java:169at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394at android.os.Handler.dispatchMessage(Handler.java:107at android.os.Looper.loop(Looper.java:194at android.app.ActivityThread.main(ActivityThread.java:5433at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:525at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:924at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691at dalvik.system.NativeStart.main(Native Method) 
                                                                          Caused by: java.lang.NullPointerException
                                                                             at android.content.res.ResourcesEx.getThemeDrawable(ResourcesEx.java:459)
                                                                             at android.content.res.ResourcesEx.loadDrawable(ResourcesEx.java:435)
                                                                             at android.content.res.TypedArray.getDrawable(TypedArray.java:609)
                                                                             at android.widget.ImageView.<init>(ImageView.java:120)
                                                                             at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:57)
                                                                             at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:53)
                                                                             at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
                                                                             at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:980)
                                                                             at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1039)
                                                                             at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:

如您所见,上面的堆栈跟踪包括:

在android.support.design.widget.NavigationView。(NavigationView。(NavigationView。 Java:95)


1
很好,谢谢您的回答。在所有其他帖子中似乎都避免了这种答案。我试图创建绘制-V21和设置都在那里,而我已经绘制文件夹,刚刚将其置于
定量

11

我解决了从gradle降级

compile 'com.android.support:design:23.1.0'

compile 'com.android.support:design:23.0.1'

当我更新Android Studio的任何组件时,似乎总是遇到问题。厌倦了它。


1
设计支持库与Android Studio几乎没有关系。
索蒂2015年

我有同样的问题,我只能通过降级解决@Ton提到的问题。真的不知道支持库与Android Studio插件和平台更新之间的关系,但是每次我更新时,某些更新对我都不起作用。我真的建议这个答案。
Saraschandraa '16

1
宁可降级,我也升级了Compact版本以匹配23.1.0。我认为最好使用较新的库,我的答案在stackoverflow.com/a/38141666/3172518
karan

8

以上修复都不适合我。

对我有用的是改变

<item name="android:textColorSecondary">#FFFFFF</item>

<item name="android:textColorSecondary">@color/colorWhite</item>

您显然需要将colorWhite添加到colors.xml中


8

请按照以下步骤操作,一定会消除此错误。

  • 查找导致错误的小部件。
  • 转到声明该小部件的布局文件。
  • 检查该文件中使用的所有资源(抽屉等)。
  • 然后确保该资源在所有版本的drawable(drawable-v21,drawable等)中都存在

干杯!!


5

正如帕拉格·奈克(Parag Naik)正确提到的那样(并且LạngHoàng不断扩展),将textColorPrimary设置为颜色状态列表以外的其他内容时会出现问题。因此,您可以将textColorPrimary设置为状态列表。android bug跟踪器中有一个问题,关于colorPrimary是只有一种颜色的状态列表:https : //code.google.com/p/android/issues/detail? id=172353

因此,对于styles.xml中的主题:

<style name="Base.Theme.Hopster" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>

    <item name="android:textColorPrimary">@color/primary_color_statelist</item>
</style>

以及实际的primary_color_statelist.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- This is used when the Navigation Item is checked -->
    <item android:color="@color/primary_text_selected" android:state_checked="true" />
    <!-- This is the default text color -->
    <item android:color="@color/primary_text" />
</selector>

5

就我而言,当我在kitkat API 19版本设备中运行该应用程序时,我遇到了相同的错误。我解决了这个问题; 我在drawable-v21目录中有一些可绘制资源(用于API 21 Lollipop中的版本)。我只是将相同的资源放在“ Drawable”文件夹中,以使用API​​ 21以下的版本。它可以工作。您可以将其放在相应的目录中


4

对我来说,我多次遇到此错误,

膨胀类android.support.design.widget.NavigationView #28和#29时出错

对我有用的解决方案是,您必须匹配您的支持设计库和支持appcompat库。

compile 'com.android.support:appcompat-v7:23.1.1'

compile 'com.android.support:design:23.1.1'

对我来说,他们必须匹配。:) 这个对我有用!


3

只为谁仍然可以解决这个问题。我遇到了同样的问题,但是这里所有的解决方案都不适合我。

只是用logcat的提示看一下NavigationView类,我发现问题来自以下代码行:

itemTextColor = this.createDefaultColorStateList(16842806);

因此,它似乎与Aenur56提到的itemTextColor有关。因此,我尝试使用Aenur56的解决方案,但是它不起作用。

看一下上面的代码行,我注意到这里有ColorStateList。所以我创建一个,然后为itemTextColor设置它,然后工作。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#00FF00" android:state_checked="true" />
    <item android:color="#000000" />
</selector>

希望对您有所帮助!


3

上面的解决方案都没有帮助我。我在其他网页上找到了它,并为我工作-“在设计库的project.properties中将目标设置为21或最高可用,然后清除设计库,appcomapt和您的项目并享受”

希望对您有所帮助!


设计库的project.properties在哪里?
8oh8

2

确保菜单的可绘制对象位于正确的文件夹中,最好将其放置在drawablev21中,这样会导致资源指向空指针。

修复了购买将我的图标移动到drawables文件夹的问题


1

升级支持库后,我遇到了同样的问题,没有答案对我有用。最后,我解决了下载最新版本的构建工具并在build.gradle中升级到buildToolsVersion "23.0.1"


1

要仔细检查的一件事是,您已在AndroidManifest.xml文件中正确应用了主题。就我而言,我省略了android:theme属性。例如:

<application ... android:theme="@style/Your.Theme.Here" ... >

1

我更好 com.android.support:appcompat-v7:23.1.0

正如@Ton所说的降级compile 'com.android.support:design:23.1.0'

但是为什么不升级 com.android.support:appcompat-v7:23.1.1

最终升级对我有用

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'

那么为什么要使用较旧的库。我认为现在最好同时使用设计和紧凑升级。


1
我像@karan的写法那样升级了它,它对我有用。
Alexiscanny

1

我也遇到了同样的问题,看了将近3个小时之后,我发现问题出在我的drawable_menu.xml文件中,它被错误地写入了:D


1

可能由于以下原因导致此错误。

  1. 当您的appcompat库和设计支持库的版本不匹配时,可能会出现此问题。匹配条件示例

     compile 'com.android.support:appcompat-v7:24.2.0' // appcompat library
    
     compile 'com.android.support:design:24.2.0' //design support library
    
  2. 如果您的样式主题文件只有这两种,

     <item name="colorPrimary">#4A0958</item>
     <item name="colorPrimaryDark">#4A0958</item>
    

然后也添加ColorAccent。它看起来应该像这样。

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">

  <item name="colorPrimary">#4A0958</item>
  <item name="colorPrimaryDark">#4A0958</item>
  <item name="colorAccent">#4A0958</item>

 </style>

我已经编辑。这意味着还可以添加ColorAccent(如果不存在)。
维沙尔·普里

1

解决问题的通用方法如下Error inflating class X

  1. 检查原因堆栈跟踪,应该是Resources$NotFoundException这样的:
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f0b0066
    at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:190)
    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2094)
    at android.content.res.Resources.getLayout(Resources.java:1111)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:424)
  1. Resource ID 实际上是生成的R.java文件中的精确整数。
  2. 0x7f0b0066哪个将指向无法膨胀(找到)的xml文件。
  3. 在大多数情况下,这是因为目录layout没有此资源,但是有些layout-XXX却具有。
  4. 解决方案是将资源放入所有必需的目录中。或至少进入layout

1

这很奇怪,但是干净的项目和重建项目对我有用。


1

就我而言

<android.support.design.widget.NavigationView...

并在应用程序配置中:

implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0'

所以我将XML更改为:

com.google.android.material.navigation.NavigationView...

迁移到androidx之后,这是正确的
Stark

0

我找到了解决方案...如果您将app:srcCompat更改为android:src,则此解决方案对我有用:)


0

我在Xamarin中遇到此错误。这是由于drawable-v21文件夹中存在一些文件。因此,我将这些文件(可能是图标文件)复制到了drawable文件夹中,错误消失了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.