Ошибка надувания класса 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

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 (только часть из них)

Он выдал три исключения, как показано ниже: все указывает, что проблемы вызваны строкой «setContentView (layout)» в 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
pptang
источник
Можете ли вы также разместить xml @layout/drawer_headerи xml @menu/drawer?
TheoK 08
Кроме того, опубликуйте всю трассировку стека.
CommonsWare
@TheoK Я редактирую свой вопрос ~ спасибо
pptang
Что ж, он не может найти один из ваших ресурсов. Я не знаю, что именно.
CommonsWare
Я столкнулся с этим, потому что переделал некоторый код. В основном я реорганизовал переменную с именем parent в parentFragment, чтобы быть более точным, и студия Android также внесла изменения в styles.xml. Пришлось исправить стиль обратно на parent = «<whatever-base-class>», и он снова сработал.
Сайфур Рахман Мохсин

Ответы:

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"
riper
3
обе библиотеки, которые я использую, одинаковы, но все равно получают ту же ошибку. Проверьте ниже код compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0'
Maya
1
Я должен использовать support of version 26. Я использую 'com.android.support:appcompat-v7:26.1.0'. Является ли 26.1.0правильно?
Nimmagadda Gowtham
Ошибка в Gradle 4.1 с compileSdkVersion 25 buildToolsVersion '26 .0.2 'и компиляцией' com.android.support:appcompat-v7:23.0.0 'compile' com.android.support:design:23.0.0 'compile' com.android .support: support-v4: 23.0.0 'Решено внесение изменений ниже compile' com.android.support:appcompat-v7:25.0.0 'compile' com.android.support:design:25.0.0 'compile' 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>

Попробуйте для начала поработать с очень простой темой приложения.

РЕДАКТИРОВАТЬ:

Этот учебник поможет. Насколько я понимаю, использование android: textColorPrimary требует минимального уровня API 21. Использование того же тега без android: использует библиотеку поддержки дизайна. Любой виджет библиотеки поддержки попытается найти элемент «textColorPrimary» вместо «android: textColorPrimary», и если он не сможет найти то же самое, он выдает вышеупомянутую ошибку.

Параг Наик
источник
Спасибо, работает как шарм !!!! но знаете ли вы, почему мы должны удалить эти два атрибута ??
pptang
4
У меня никогда не было этих двух атрибутов, и я до сих пор получаю ту же ошибку. Любые идеи?
Шубхам Чаудхари
1
Для меня это все еще не удается, даже если я добавлю android: textColorPrimary в values-v21 / styles.xml
Дэвид
1
Пожалуйста, обратите внимание на ответ, который Балман Рават дал ниже. В моем случае мне пришлось применить оба ответа.
NewestStackOverflowUser
@Parag Naik Спасибо, что спасли мою неделю :) Мне нравится это сообщество.
Ясин Качмаз
41

У меня тоже была такая же ошибка. В моем случае некоторые ресурсы были только в drawable-v21. Также скопируйте эти ресурсы в папку с возможностью переноса. Это решило проблему для меня.

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

Это основная проблема.

Саджал
источник
2
Ага. Мне то же. Был файл XML с возможностью рисования с использованием vectorв v21папке и ничего соответствующего в стандартной папке <21. Спасибо.
eoinzy 01
1
На месте .. Я добавил изображения в drawable-xx, но не в drawable. Вот в чем проблема
Рахул Хоуг
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:textColorPrimaryи android:textColorSecondaryв своей теме с помощью этого метода.

Пидикан
источник
Я пробовал ваш обходной путь отсюда , но все равно получаю то же сообщение об ошибке. В любом случае спасибо за вашу помощь.
pptang
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\drawableбац! Все странные ошибки исчезнут.

Ниже приведены некоторые трассировки стека, когда я помещал 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.inflateHeaderView (NavigationView.java:262) в android.support.design.widget.NavigationView. (NavigationView.java:173) в android.support.design.widget.NavigationView. (NavigationView. java: 95)

fWd82
источник
1
Очень хорошо, спасибо за ответ. Это похоже на ответ, которого избегали во всех других сообщениях. Я пытался создать drawable-v21 и установить все там, в то время как у меня уже была папка с возможностью рисования, и мне просто нужно было поместить ее туда,
квант
11

Я решил, что это понижение в Gradle с

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

к

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

Похоже, у меня всегда возникают проблемы при обновлении любого компонента Android Studio. Устал от этого.

Тонна
источник
1
Библиотека поддержки дизайна почти не связана с Android Studio.
Сотти,
У меня была такая же проблема, и я мог решить ее только с помощью понижения, как упоминал @Ton. На самом деле не знаю, как библиотека поддержки связана с обновлениями плагинов и платформ Android Studio, но каждый раз, когда я обновляю то или иное, у меня не работает. Я действительно предлагаю такой ответ.
Сарасчандра
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-v21, drawable и т. Д.)

Ура !!

Прашант Паливал
источник
5

Как правильно упоминает Параг Наик (и Лонг Хоанг расширяет его), проблема возникает при установке textColorPrimary на что-то иное, чем список состояний цвета. Таким образом, вы можете установить textColorPrimary как список состояний. В трекере ошибок Android есть проблема, связанная с тем, что 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

В моем случае такая же ошибка возникла при запуске приложения на устройстве версии 19 Kitkat API. Я понял проблему; У меня были ресурсы с возможностью рисования, которые находились в каталоге 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'

Для меня они должны совпадать. :) Меня устраивает!

RoCk RoCk
источник
3

Просто для тех, кто до сих пор занимается этим вопросом. Я столкнулся с той же проблемой, но все решения здесь мне не подходят.

Просто взгляните на класс NavigationView с помощью команды logcat, я обнаружил, что проблема возникает из этой строки кода:

itemTextColor = this.createDefaultColorStateList(16842806);

Итак, похоже, это связано с itemTextColor, как упоминал Aenur56. Итак, я попытался использовать решение 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, поэтому это вызвало нулевой указатель на ресурс.

Исправлено перемещение моих значков в папку с чертежами

Исмаил Озил
источник
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 также, если его нет.
Vishal Puri
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.
11
источник
1

Это странно, но чистый проект и проект восстановления сработали для меня.

Shaby
источник
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, спасибо
Старк,
0

Я нашел решение ... если вы использовали app: srcCompat, измените на android: src, это решение сработало для меня :)

Кхун Хтец Наинг
источник
0

Я столкнулся с этой ошибкой в ​​Xamarin. Это произошло из-за некоторых файлов, которые присутствовали в папке drawable-v21 . Поэтому я скопировал эти файлы (возможно, файлы значков) в папку с возможностью переноса, и ошибка исчезла.

Джунед Хан Момин
источник