2016-03-03 6 views
12

Wenn ich

ermöglichen
vectorDrawables.useSupportLibrary = true 

ich viel resourceNotFoundExceptions auf KitKat bekommen und unten genannten Geräte. Ich erhalte diese für NavigationView für Menüs und auch für ImageViews mit App: srcCompat

android.content.res.Resources$NotFoundException: Resource ID #0x7f02006b 
at android.content.res.Resources.getValue(Resources.java:2305) 
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:268) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:178) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173) 
at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421) 
at android.support.v7.view.menu.ActionMenuItemView.initialize(ActionMenuItemView.java:114) 
at android.support.v7.widget.ActionMenuPresenter.bindItemView(ActionMenuPresenter.java:206) 
at android.support.v7.view.menu.BaseMenuPresenter.getItemView(BaseMenuPresenter.java:182) 
at android.support.v7.widget.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:192) 
at android.support.v7.widget.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:480) 
at android.support.v7.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1138) 
at android.support.v7.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:91) 
at android.support.v7.widget.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:229) 
at android.support.v7.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:284) 
at android.support.v7.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:1030) 
at android.support.v7.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:1053) 
at android.support.v7.app.AppCompatDelegateImplV7.preparePanel(AppCompatDelegateImplV7.java:1345) 
at android.support.v7.app.AppCompatDelegateImplV7.doInvalidatePanelMenu(AppCompatDelegateImplV7.java:1583) 
at android.support.v7.app.AppCompatDelegateImplV7.access$100(AppCompatDelegateImplV7.java:89) 
at android.support.v7.app.AppCompatDelegateImplV7$1.run(AppCompatDelegateImplV7.java:128) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:146) 
at android.app.ActivityThread.main(ActivityThread.java:5653) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:110) 

für NavigationView

Process: org.ligi.gobandroid_hd, PID: 11473 
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.ligi.gobandroid_hd/org.ligi.gobandroid_hd.ui.game_setup.GoSetupActivity}: android.view.InflateException: Binary XML file line #20: Error inflating class android.support.design.widget.NavigationView 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2404) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464) 
    at android.app.ActivityThread.access$900(ActivityThread.java:172) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:146) 
    at android.app.ActivityThread.main(ActivityThread.java:5653) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class android.support.design.widget.NavigationView 
    at android.view.LayoutInflater.createView(LayoutInflater.java:626) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129) 
    at org.ligi.gobandroid_hd.ui.application.GobandroidFragmentActivity.setContentView(GobandroidFragmentActivity.java:85) 
    at org.ligi.gobandroid_hd.ui.GoActivity.onCreate(GoActivity.java:108) 
    at android.app.Activity.performCreate(Activity.java:5541) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2368) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)  
    at android.app.ActivityThread.access$900(ActivityThread.java:172)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5653)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)  
    at 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:423) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:600) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)  
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)  
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)  
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)  
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)  
    at org.ligi.gobandroid_hd.ui.application.GobandroidFragmentActivity.setContentView(GobandroidFragmentActivity.java:85)  
    at org.ligi.gobandroid_hd.ui.GoActivity.onCreate(GoActivity.java:108)  
    at android.app.Activity.performCreate(Activity.java:5541)  
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)  
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2368)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)  
    at android.app.ActivityThread.access$900(ActivityThread.java:172)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5653)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)  
    at dalvik.system.NativeStart.main(Native Method)  
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f020067 
    at android.content.res.Resources.getValue(Resources.java:2305) 
    at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:268) 
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:178) 
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173) 
    at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421) 
    at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:475) 
    at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.update(NavigationMenuPresenter.java:436) 
    at android.support.design.internal.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:112) 
    at android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:241) 
    at android.support.design.widget.NavigationView.<init>(NavigationView.java:169) 
    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:423)  
    at android.view.LayoutInflater.createView(LayoutInflater.java:600)  
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)  
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)  
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)  
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)  
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)  
    at org.ligi.gobandroid_hd.ui.application.GobandroidFragmentActivity.setContentView(GobandroidFragmentActivity.java:85)  
    at org.ligi.gobandroid_hd.ui.GoActivity.onCreate(GoActivity.java:108)  
    at android.app.Activity.performCreate(Activity.java:5541)  
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)  
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2368)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2464)  
    at android.app.ActivityThread.access$900(ActivityThread.java:172)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5653)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)  
    at dalvik.system.NativeStart.main(Native Method)  
+0

Was ist Ihre Lieblingsversion? – Sayem

+1

Verwenden Sie die Support-Bibliothek v23.2.0? und Ihr build.gradle hat die von den Dokumenten vorgeschlagenen Änderungen (und kann in dieser Antwort gefunden werden: http://stackoverflow.com/a/35624744/4860513)? – W0rmH0le

+0

2.11 und build-plugin 2.0.0-beta6 – ligi

Antwort

20

ich das Problem gefunden: Ich hatte mein Vektor-Drawables in ziehbar-anydpi/- dies erzeugt diesen Absturz - wenn ich die Drawables bewegen drawable/es funktioniert gut

+0

Vielen Dank Sie! Das ist die wahre Antwort. –

+0

eine Stunde verbracht, um dieses # ° $% & £ § Problem zu lösen ... – Massimo

+2

Vielen Dank, bewegte sich von "Drawable" zu "Drawable-Nodpi" für mich. –

4

soweit ich auf die Dokumente gelesen habe es nur XML-Zugriff für Image.

Für das Menü müssen Sie in Java verwenden.

toolbar.inflateMenu(menuResId); 
toolbar.getMenu() 
     .findItem(menuItemId) 
     .setIcon(VectorDrawableCompat 
         .createFromResource(resource, drawableId); 
+0

Ich sah auch nichts auf der docs - aber da dies im Wesentlichen von appcompat gezogen wird, fragte ich mich, ob es etwas Automatismus gibt unter der Haube ist mir nicht bewusst - Menü-Elemente sind ein großer Anwendungsfall für VectorDrawables - Hinzufügen dieser Workaround macht den Code hässlich – ligi

+0

hm - @chrisbanes Staaten in den Kommentaren seiner Blog-Post "Menüpunkte funktionieren gut. Wie geht es Sie versuchen, es mit Vorlieben zu verwenden? " – ligi

+0

Ich musste das nicht hinzufügen, und meine Menüelemente funktionierten einfach ohne XML-Änderung aus der Box. Ich verwende 23.0.4 der Support-Bibliothek. –

5

konnte ich die Vektor Drawables auf vorge Lollipop Geräte verwenden, indem sie in einem StateListDrawable (a Selektor) gewickelt wird.

Genauer gesagt, habe ich einen Selektor ziehbar in XML, und dann hinzugefügt, um ein einzigen Vektor ziehbar in ihnen:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/vector_ic_action_add" /> 
</selector> 

ich dann verwendet diese „verpackt“ ziehbar in meinem Speiseplan. Wenn Sie weitere Informationen darüber, wie es funktioniert, finden Sie this sehr nützlichen Beitrag von Chris Banes.

+4

Ich bekomme die Ausnahmen, auch wenn ich die Drawables wie diese – ligi

+0

wickeln ich liebe dich Mann :) es ist Arbeit !!!!!! Ich habe dieses Problem über 7 Tage und immer nach Problemen suchen ♥♥♥ –

+0

Diese Lösung funktioniert nicht für Support-Bibliothek v 25.3.1 Verwenden Sie diese stattdessen https://StackOverflow.com/a/38507596/4579783 – bshears

20

Um Versionen vor Lollipop zu unterstützen, verwenden

com.android.support:appcompat-v7:24.0.0 (oder höher)

Support-Bibliothek.

Und dann statt

ContextCompat.getDrawable(view.getContext(), id); 

Verwendung dieses

AppCompatResources.getDrawable(view.getContext(), id); 
+0

Vielen Dank - das hat für uns funktioniert. Wie hast du das herausgefunden? –

+0

Hinweis: AppCompatDrawableManager ist eine private API, daher kann diese jederzeit unterbrochen werden. Siehe: https://code.google.com/p/android/issues/detail?id=216903#c13 –

+0

Ich habe das gleiche Problem, Dann fand ich, dass Support-Bibliothek aktualisiert wurde und es nirgendwo wo erwähnt .... Durch Android-Entwickler Fehlerliste habe ich herausgefunden ... –