Błąd podczas napełniania klasy android.support.design.widget.NavigationView


87

Postępowałem zgodnie z samouczkiem dotyczącym nowego składnika NavigationView w bibliotece projektów pomocy technicznej i nie mogę przejść przez ten komunikat o błędzie:

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

Próbowałem tutaj każdego obejścia

Błąd podczas korzystania z jakichkolwiek elementów biblioteki obsługi projektów Androida

ale komunikat o błędzie nadal istnieje.

xml

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true" >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

    <include layout="@layout/toolbar" android:id="@+id/mainToolBar" />

    <fragment android:name="com.ais.cherry.fragment.LoginFragment"
        android:id="@+id/loginFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/mainToolBar" />
    <fragment     android:name="com.ais.cherry.fragment.WaterFallFragment"
        android:id="@+id/mainFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/mainToolBar" />
    <fragment android:name="com.ais.cherry.fragment.SearchFragment"
        android:id="@+id/searchFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/mainToolBar" />
    <fragment android:name="com.ais.cherry.fragment.ChatMainFragment"
        android:id="@+id/chatMainFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/mainToolBar" />
    <fragment android:name="com.ais.cherry.fragment.ProfileFragment"
        android:id="@+id/profileFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/mainToolBar" />


    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@android:color/white"
        app:itemTextColor="#212121"
        app:headerLayout="@layout/drawer_header"
        app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>

build.gradle

buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}

compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
    applicationId "com.ais.cherry"
    minSdkVersion 16
    targetSdkVersion 22      
    multiDexEnabled true
    renderscriptTargetApi 22
    renderscriptSupportModeEnabled true

}
dependencies {
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:support-v4:22.2.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.android.support:recyclerview-v7:22.2.0'
}

Projekt build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}

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

Każda pomoc będzie mile widziana!

Edycja - dodaj @ 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 (tylko część z nich)

Wyrzucił trzy wyjątki, jak poniżej: wszystkie wskazują, że przyczyną problemów jest wiersz „setContentView (layout)” w pliku 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

Czy możesz również opublikować pliki XML @layout/drawer_headeri XML @menu/drawer?
TheoK,

Prosimy również o przesłanie całego śladu stosu.
CommonsWare,

@TheoK I Edytuj moje pytanie ~ dzięki
pptang

Cóż, nie może znaleźć jednego z twoich zasobów. Ale nie wiem który.
CommonsWare

Zmierzyłem się z tym, ponieważ refaktoryzowałem kod. Zasadniczo refaktoryzowałem zmienną o nazwie parent do parentFragment, aby była bardziej dokładna, a studio Android wprowadziło również zmianę w styles.xml. Musiałem przywrócić styl z powrotem do parent = „<cokolwiek-base-class>” i znowu zadziałało.
Saifur Rahman Mohsin

Odpowiedzi:


83

Właściwie nie jest to kwestia primarycolortextaktualizacji, aktualizacji lub obniżenia poziomu zależności. Ten problem prawdopodobnie wystąpi, gdy wersja Twojej appcompatbiblioteki i biblioteki wsparcia projektowania nie są zgodne.

Przykład dopasowania warunku

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

Czy możesz mi wyjaśnić, jak wykryć ten problem dla nowicjusza takiego jak ja, proszę :)
Jerome2606

Jeśli zawsze deklarujesz zmienną dla takich rzeczy w swojej aplikacji / build.gradle, nie zapomnisz o zmianie, jak w:def supportVersion = '25.1.0' compile "com.android.support:appcompat-v7:$supportVersion" compile "com.android.support:design:$supportVersion"
riper

3
obie biblioteki używane przeze mnie są takie same, ale nadal występuje ten sam błąd. Sprawdź poniżej kompilację kodu 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0'
Maya Mohite

1
Powinienem użyć support of version 26. Używam 'com.android.support:appcompat-v7:26.1.0'. Jest 26.1.0poprawne?
Nimmagadda Gowtham

Błąd napotkany w Gradle 4.1 z compileSdkVersion 25 buildToolsVersion '26 .0.2 'i kompilacją' 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 „Rozwiązano wprowadzanie poniższych zmian kompiluj” 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

Miałem podobny błąd. Kiedy używam

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

działa u mnie, gdy usuwam elementy motywu android: textColorPrimary i 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>

Na początek spróbuj pracować z bardzo prostym motywem aplikacji.

EDYTOWAĆ:

Ten poradnik pomoże. Rozumiem, że używanie „android: textColorPrimary” wymaga interfejsu API na poziomie minimum 21. Używanie tego samego tagu bez „android:” używa biblioteki obsługi projektowania. Każdy widżet biblioteki obsługi będzie próbował znaleźć element „textColorPrimary” zamiast „android: textColorPrimary” i jeśli nie znajdzie tego samego, zgłasza wspomniany powyżej błąd.


Dzięki, działa jak urok !!!! ale czy wiesz, dlaczego powinniśmy usunąć te dwa atrybuty?
pptang

4
Nigdy nie miałem tych dwóch atrybutów i nadal otrzymuję ten sam błąd. Jakieś pomysły?
Shubham Chaudhary

1
U mnie nadal nie działa, nawet jeśli dodam android: textColorPrimary w values-v21 / styles.xml
David

1
Proszę rozważyć odpowiedź, którą Balman Rawat udzielił poniżej. W moim przypadku musiałem zastosować obie odpowiedzi.
NewestStackOverflowUser

@Parag Naik Uratowałeś mój tydzień dzięki :) Uwielbiam tę społeczność.
Yasin Kaçmaz

41

Miałem też ten sam błąd. W moim przypadku niektóre zasoby były dostępne tylko w wersji 21. Skopiuj te zasoby również do folderu do rysowania. To rozwiązało problem.

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

To jest główny problem.


2
Tak. Dla mnie to samo. W folderze znajdował się plik XML, który można było rysować, a vectorw v21folderze nie było nic odpowiadającego. Dzięki.
eoinzy

1
Na miejscu ... Dodałem obrazy w formacie drawable-xx, ale nie w wersji do rysowania. To był problem
Rahul Hawge

1
wielkie dzięki, mój selector.xml i inny plik xml też tam był. Ja tylko go skopiuję i zapiszę problem
MohammadL

27

Jeśli już przeprowadziłeś migrację do androidx, powinieneś zmienić plik XML układu z

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

do

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

15

Miałem ten sam błąd, rozwiązałem go, dodając app:itemTextColor="@color/a_color"do widoku nawigacji:

<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"/>

Nadal możesz używać android:textColorPrimaryi android:textColorSecondaryw swoim motywie za pomocą tej metody.


Wypróbowałem tutaj obejście , ale nadal pojawia się ten sam komunikat o błędzie. Mimo wszystko, dziękuję za twoją pomoc.
pptang

15

Cóż, więc próbowałem naprawić ten błąd. I żaden nie pracował dla mnie. Nie udało mi się znaleźć rozwiązania. Scenariusz:

Właśnie zamierzałem zrobić Navigation Drawer Projectwewnętrzne Android Studio 2.1.2. A kiedy próbowałem zmienić domyślną ikonę Androida nav_header_main.xml, otrzymywałem dziwne błędy. Zorientowałem się, że upuszczam moje PNGlogo w ...\app\src\main\res\drawable-21. Kiedy próbuję umieścić moje logo PNG w ...\app\src\main\res\drawablebam! Wszystkie dziwne błędy znikają.

Oto niektóre ślady stosu, gdy umieszczałem PNG w drawable-21folderze:

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:

Jak widać, powyższy ślad stosu obejmuje:

android.support.design.widget.NavigationView.inflateHeaderView (NavigationView.java:262) pod adresem android.support.design.widget.NavigationView. (NavigationView.java:173) pod adresem android.support.design.widget.NavigationView. (NavigationView. java: 95)


1
Bardzo dobrze, dzięki za odpowiedź. Wydaje się, że jest to odpowiedź, której unikano we wszystkich innych postach. Próbowałem stworzyć drawable-v21 i ustawić tam wszystko, podczas gdy miałem już folder do rysowania i po prostu musiałem go tam umieścić
Quant

11

Rozwiązałem to, obniżając stopień z

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

do

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

Wygląda na to, że zawsze mam problemy, gdy aktualizuję dowolny składnik Android Studio. Męczę się tym.


1
Biblioteka wsparcia projektowania jest ledwo związana z Android Studio.
Sotti

Miałem ten sam problem i mogłem go rozwiązać tylko poprzez obniżenie poziomu, o którym wspomniał @Ton. Naprawdę nie wiem, w jaki sposób Biblioteka wsparcia jest powiązana z wtyczką Android Studio i aktualizacjami platformy, ale za każdym razem, gdy aktualizuję, niektóre lub inne nie działają. Naprawdę sugeruję tę odpowiedź.
Saraschandraa

1
Zamiast obniżyć wersję, zaktualizowałem Compact do wersji 23.1.0. Myślę, że najlepiej użyć nowszych bibliotek moja odpowiedź powyżej stackoverflow.com/a/38141666/3172518
karan

8

Żadna z powyższych poprawek nie zadziałała dla mnie.

To, co działało, zmieniało się

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

do

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

Oczywiście musisz dodać colorWhite do swojego colors.xml


8

Wykonanie poniższych czynności z pewnością usunie ten błąd.

  • Znajdź widżet powodujący błąd.
  • Przejdź do pliku układu, w którym zadeklarowano ten widget.
  • Sprawdź wszystkie zasoby (rysunki itp.) Użyte w tym pliku.
  • Następnie upewnij się, że zasoby są dostępne we wszystkich wersjach drawables (drawable-v21, drawable itp.)

Twoje zdrowie!!


5

Jak słusznie wspomina Parag Naik (a Lạng Hoàng rozwija się dalej), problem pojawia się podczas ustawiania textColorPrimary na coś innego niż lista stanów kolorów. Możesz więc ustawić textColorPrimary jako listę stanów. W narzędziu do śledzenia błędów systemu Android występuje problem, że colorPrimary jest listą stanów z tylko jednym kolorem: https://code.google.com/p/android/issues/detail?id=172353

Więc dla twojego motywu w 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>

I rzeczywisty plik 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

W moim przypadku miałem ten sam błąd, gdy uruchomiłem aplikację na urządzeniu w wersji KitKat API 19. Rozwiązałem problem; Miałem kilka zasobów do rysowania, które znajdowały się w katalogu drawable-v21 (który jest używany w wersjach z API 21 Lollipop). Po prostu umieściłem te same zasoby w folderze „Drawable”, aby pracować z wersją poniżej API 21. To działa. Możesz umieścić go w odpowiednim katalogu


4

U mnie wielokrotnie napotkałem ten błąd,

Błąd podczas pompowania klas android.support.design.widget.NavigationView # 28 i # 29

Rozwiązanie, które mi pasuje, polega na tym, że musisz dopasować swoją bibliotekę projektów wsparcia i bibliotekę obsługi aplikacji.

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

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

Dla mnie muszą pasować. :) Mi to pasuje!


3

Tylko dla tych, którzy nadal zajmują się tym problemem. Dotarłem do tego samego problemu, ale wszystkie rozwiązania tutaj nie działają.

Wystarczy spojrzeć na klasę NavigationView z cue z logcat, znalazłem problem z tej linii kodu:

itemTextColor = this.createDefaultColorStateList(16842806);

Wydaje się więc, że jest to związane z itemTextColor, jak wspomniał Aenur56. Próbowałem więc z rozwiązaniem Aenur56, ale to nie działa.

Spójrz na wiersz powyższego kodu, zauważyłem, że jest tam ColorStateList. Więc tworzę jeden, a następnie ustawiam dla itemTextColor, a potem działa.

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

Mam nadzieję, że to pomoże!


3

Żadne z powyższych rozwiązań mi nie pomogło. Znalazłem to na innej stronie internetowej i zadziałało - „W project.properties biblioteki projektowej ustaw cel na 21 lub najwyższy dostępny, a następnie wyczyść bibliotekę projektu, appcomapt i swój projekt i ciesz się”

Mam nadzieję, że to pomoże!


Gdzie jest project.properties biblioteki projektu?
8oh8

2

Upewnij się, że obiekty do rysowania dla menu znajdują się we właściwym folderze, w moim miejscu, gdzie zostało umieszczone w drawablev21, dlatego spowodowało to zerowanie wskaźnika do zasobu.

Naprawiono to, że przenoszę moje ikony do folderu drawables


1

Miałem ten sam problem po aktualizacji biblioteki wsparcia i żadna z odpowiedzi nie działała dla mnie. Wreszcie rozwiązałem pobieranie najnowszej wersji narzędzi do kompilacji i aktualizację w build.gradle dobuildToolsVersion "23.0.1"


1

Należy dokładnie sprawdzić, czy motyw został poprawnie zastosowany w pliku AndroidManifest.xml. W moim przypadku pominąłem atrybut android: theme . Na przykład:

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

1

LEPSZE ULEPSZONO com.android.support:appcompat-v7:23.1.0

jak powiedział @Ton downgradecompile 'com.android.support:design:23.1.0'

ALE Dlaczego nie zaktualizować com.android.support:appcompat-v7:23.1.1

Ostateczna aktualizacja zadziałała dla mnie

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

Dlaczego więc używać starszej biblioteki. Myślę, że teraz lepiej jest używać zarówno projektu, jak i kompaktowego ulepszenia.


1
Uaktualniam swój, tak jak napisał @karan, i to działa dla mnie.
Alexiscanny,

1

Miałem też ten sam problem, po obejrzeniu prawie 3 godzin stwierdziłem, że problem był w moim pliku drawable_menu.xml, był źle napisany: D


1

Ten błąd może być spowodowany przyczynami wymienionymi poniżej.

  1. Ten problem prawdopodobnie wystąpi, gdy wersja biblioteki appcompat i biblioteki obsługi projektowania nie są zgodne. Przykład dopasowania warunku

     compile 'com.android.support:appcompat-v7:24.2.0' // appcompat library
    
     compile 'com.android.support:design:24.2.0' //design support library
    
  2. Jeśli plik motywu w stylach zawiera tylko te dwa,

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

następnie dodaj również ColorAccent. Powinien wyglądać mniej więcej tak.

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

redagowałem. Oznacza to dodanie ColorAccent także wtedy, gdy go nie ma.
Vishal Puri

1

Ogólny sposób rozwiązywania problemów, takich jak Error inflating class X:

  1. sprawdź ślad stosu przyczyny i powinno wyglądać Resources$NotFoundExceptiontak:
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 jest w rzeczywistości dokładną liczbą całkowitą z wygenerowanego pliku R.java.
  2. Znajdź, 0x7f0b0066który będzie wskazywał na plik xml, którego nie można zawyżać (znaleźć).
  3. W większości przypadków layoutdzieje się tak, ponieważ katalog nie ma tego zasobu, ale niektóre layout-XXXmają.
  4. Rozwiązaniem jest umieszczenie zasobów we wszystkich wymaganych katalogach. Albo przynajmniej do layout.

1

To dziwne, ale czysty projekt i projekt przebudowy zadziałały dla mnie.


1

W moim przypadku miałem

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

i w konfiguracji aplikacji:

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

Więc zmieniłem XML na:

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

jest to poprawne po migracji na androidx dzięki
Stark

0

Znalazłem rozwiązanie ... jeśli użyłeś app: srcCompat zmień na android: src to rozwiązanie zadziałało dla mnie :)


0

Miałem do czynienia z tym błędem w oprogramowaniu Xamarin. Było to spowodowane niektórymi plikami, które znajdowały się w folderze drawable-v21 . Więc skopiowałem te pliki (prawdopodobnie pliki ikon) do folderu do rysowania i błąd zniknął.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.