Помилка роздування класу 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>

Будь-яка допомога буде вдячна!

Редагувати - додати @ меню / висувний ящик & @ меню / висувний_заголовок & стек

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)" у in 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

Чи можете ви також розмістити xml @layout/drawer_headerта xml @menu/drawer?
TheoK

Також, будь ласка, опублікуйте всю трасу стека.
CommonsWare

@TheoK Редагую своє запитання ~ дякую
pptang

Ну, він не може знайти жодного з ваших ресурсів. Не знаю, що, правда.
CommonsWare

Я зіткнувся з цим, тому що переробив деякий код. В основному я переробив змінну, яка називається parent to parentFragment, щоб бути точнішим, і студія Android також внесла зміни в styles.xml. Довелося виправити стиль назад до parent = “<wwhat-base-class>”, і він знову заробив.
Saifur Rahman Mohsin

Відповіді:


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

Чи можете ви пояснити мені, як виявити цю проблему для такого новачка, як я, плз :)
Jerome2606

Якщо ви завжди заявляєте змінну для подібних речей у своєму додатку / build.gradle, ви заважаєте собі забути змінити, як у:def supportVersion = '25.1.0' compile "com.android.support:appcompat-v7:$supportVersion" compile "com.android.support:design:$supportVersion"
riper

3
обидві використовувані мною бібліотеки однакові, але все одно отримують однакову помилку. Перевірте нижче компіляцію коду 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0'
Maya Mohite

1
Я повинен використовувати support of version 26. Я використовую 'com.android.support:appcompat-v7:26.1.0'. Чи 26.1.0правильно?
Німмагадда Гоутам

Помилка у 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 'Вирішено внесення компіляції змін нижче' 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 Ти врятував мій тиждень, дякую :) Я люблю цю спільноту.
Yasin Kaçmaz

41

У мене теж була така ж помилка. У моєму випадку деякі ресурси були лише у drawable-v21. Скопіюйте ці ресурси в папку, яку можна малювати. Це вирішило проблему для мене.

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

Це головна проблема.


2
Так. Те саме для мене. У папці був файл XML, який можна малювати, а vectorв v21стандартній папці <21 - нічого відповідного. Дякую.
eoinzy

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\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.inflateHeaderView (NavigationView.java:262) на android.support.design.widget.NavigationView. (NavigationView.java:173) на android.support.design.widew.NavigationViewiViViG. java: 95)


1
Дуже добре, дякую за відповідь. Здається, це якась відповідь, якої вдалося уникнути у всіх інших публікаціях. Я намагався створити drawable-v21 і встановити все там, поки у мене вже була папка для малювання, і я просто повинен був помістити її туди
квант

11

Я вирішив його пониження в. З

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

У моєму випадку у мене трапилася та сама помилка, коли я запускав програму на пристрої версії 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

Тільки для тих, хто все ще доходить до цього питання. Я зіткнувся з тією ж проблемою, але всі вирішення тут для мене не працюють.

Просто погляньте на клас 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 або найвищу з доступних, потім очистіть lib дизайну, appcomapt та ваш проект і насолоджуйтесь"

Сподіваюся, це допоможе!


Де проект.властивості бібліотеки дизайну?
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.


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

Я знайшов рішення ... якщо ви використовували додаток: srcCompat змінити на android: src це рішення працювало для мене :)


0

Я стикався з цією помилкою в Xamarin. Це було пов’язано з деякими файлами, які були в папці drawable-v21 . Тож я скопіював ці файли (ймовірно, файли із значками ) до папки, яку можна малювати, і помилка зникла.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.