เกิดข้อผิดพลาดในการขยายคลาส 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>

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.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 เป็น parentFragment เพื่อให้แม่นยำยิ่งขึ้นและ android studio ก็ทำการเปลี่ยนแปลง styles.xml ด้วย ต้องแก้ไขสไตล์กลับเป็น parent =“ <whatever-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

หากคุณประกาศตัวแปรสำหรับสิ่งต่างๆเช่นนี้ใน app / 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
ฉันไม่เคยมีคุณสมบัติทั้งสองนี้และยังคงได้รับข้อผิดพลาดเดียวกัน ความคิดใด ๆ ?
Shubham Chaudhary

1
สำหรับฉันมันยังคงล้มเหลวแม้ว่าฉันจะเพิ่ม android: textColorPrimary ใน values-v21 / styles.xml
David

1
โปรดพิจารณาคำตอบที่Balman Rawatให้ไว้ด้านล่าง ในกรณีของฉันฉันต้องใช้ทั้งสองคำตอบ
LatestStackOverflowUser

@Parag Naik คุณบันทึกสัปดาห์ของฉันขอบคุณ :) ฉันรักชุมชนนี้
Yasin Kaçmaz

41

ฉันก็มีข้อผิดพลาดเดียวกัน ในกรณีของฉันทรัพยากรบางส่วนอยู่ใน drawable-v21 เท่านั้น คัดลอกทรัพยากรเหล่านั้นไปยังโฟลเดอร์ที่วาดได้ด้วย สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้

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

นี่คือปัญหาหลัก


2
ได้. เหมือนกับฉัน. มีไฟล์ XML ที่วาดได้โดยใช้ a vectorในv21โฟลเดอร์และไม่มีอะไรเกี่ยวข้องในโฟลเดอร์มาตรฐาน <21 ขอบคุณ.
eoinzy

1
เห็น .. ฉันเพิ่มภาพใน drawable-xx แต่ไม่สามารถวาดได้ นั่นคือปัญหา
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:textColorPrimaryและandroid:textColorSecondaryอยู่ในธีมของคุณได้ด้วยวิธีนี้


ฉันได้พยายามแก้ปัญหาของคุณจากที่นี่แต่ก็ยังมีข้อผิดพลาดเดียวกัน ขอบคุณสำหรับความช่วยเหลือของคุณ
pptang

15

ดังนั้นฉันจึงพยายามแก้ไขข้อผิดพลาดนี้ และไม่มีใครทำงานให้ฉัน ฉันไม่สามารถหาวิธีแก้ปัญหาได้ สถานการณ์:

ฉันกำลังจะสร้างNavigation Drawer ProjectAndroid 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:

ดังที่คุณเห็น Stack Trace ด้านบน ได้แก่ :

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)


1
ดีมากขอบคุณสำหรับคำตอบ ดูเหมือนเป็นคำตอบที่หลีกเลี่ยงในโพสต์อื่น ๆ ทั้งหมด ผมพยายามที่จะสร้าง drawable-V21 และการตั้งค่าทั้งหมดในขณะที่มีฉันแล้วก็โฟลเดอร์ drawable และเพิ่งมีการวางไว้มี
quant

11

ฉันแก้ไขการลดระดับในการไล่ระดับจาก

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

ถึง

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

ดูเหมือนว่าฉันมักจะมีปัญหาเมื่ออัปเดตส่วนประกอบใด ๆ ของ Android Studio เริ่มเบื่อมัน


1
Design Support Library แทบจะไม่เกี่ยวข้องกับ Android Studio เลย
Sotti

ฉันมีปัญหาเดียวกันและฉันสามารถแก้ไขได้โดยการดาวน์เกรดตามที่ @Ton กล่าวถึงเท่านั้น ไม่รู้จริงๆว่า Support Library เกี่ยวข้องกับการอัปเดตปลั๊กอิน Android Studio และแพลตฟอร์มอย่างไร แต่ทุกครั้งที่ฉันอัปเดตบางส่วนหรืออื่น ๆ ไม่ได้ผล ฉันแนะนำคำตอบนี้จริงๆ
Saraschandraa

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

การทำตามขั้นตอนด้านล่างจะเป็นการลบข้อผิดพลาดนี้อย่างแน่นอน

  • ค้นหาวิดเจ็ตที่ทำให้เกิดข้อผิดพลาด
  • ไปที่ไฟล์เลย์เอาต์ที่มีการประกาศวิดเจ็ตนั้น
  • ตรวจสอบทรัพยากรทั้งหมด (drawables เป็นต้น) ที่ใช้ในไฟล์นั้น
  • จากนั้นตรวจสอบให้แน่ใจว่ามีทรัพยากรอยู่ในทุกเวอร์ชันของ drawables (drawable-v21, drawable และอื่น ๆ )

ไชโย !!


5

ดังที่ Parag Naik กล่าวถึงอย่างถูกต้อง (และLạngHoàngขยายออก) ปัญหาเกิดขึ้นเมื่อตั้งค่า 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 และโครงการของคุณและเพลิดเพลิน"

หวังว่ามันจะช่วยได้!


project.properties ของไลบรารีการออกแบบอยู่ที่ไหน
8oh8

2

ตรวจสอบให้แน่ใจว่า drawables ของคุณสำหรับเมนูอยู่ในโฟลเดอร์ที่ถูกต้องของฉันซึ่งวางไว้ใน drawablev21 ด้วยเหตุนี้จึงทำให้เกิด nullpointer ไปยังทรัพยากร

แก้ไขว่าซื้อย้ายไอคอนของฉันไปยังโฟลเดอร์ 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 ด้วยหากไม่มีอยู่
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

เป็นโครงการที่แปลก แต่สะอาดและสร้างโครงการใหม่ได้ผลสำหรับฉัน


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

0

ฉันพบวิธีแก้ปัญหา ... ถ้าคุณใช้ app: srcCompat เปลี่ยนเป็น android: src วิธีนี้ใช้ได้กับฉัน :)


0

ฉันพบข้อผิดพลาดนี้ใน Xamarin นี่เป็นเพราะไฟล์บางไฟล์ที่อยู่ในโฟลเดอร์drawable-v21 ดังนั้นฉันจึงคัดลอกไฟล์เหล่านั้น (อาจเป็นไฟล์ไอคอน) ไปยังโฟลเดอร์ที่วาดได้และข้อผิดพลาดก็หายไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.