2016-03-03 100 views
12

當我使

vectorDrawables.useSupportLibrary = true 

我得到了很多的奇巧及以下設備resourceNotFoundExceptions的。我得到這個爲NavigationView的菜單,也爲與應用ImageViews: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) 

爲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

你的gradle版本是什麼? – Sayem

+1

您使用的是支持庫v23.2.0嗎?你的build.gradle有文檔建議的修改(可以在這個答案中找到:http://stackoverflow.com/a/35624744/4860513)? – W0rmH0le

+0

2.11和build-plugin 2.0.0-beta6 – ligi

回答

20

我發現這個問題:我在繪製-anydpi我的矢量繪圖資源/ - 這將產生此故障 - 當我移動可繪製到繪製/它工作正常

+0

感謝您!這是真正的答案。 –

+0

花了一個小時解決了這個問題......°$%&£§ – Massimo

+2

謝謝你,從'drawable'移動到'drawable-nodpi'爲我工作。 –

4

就我讀過的文檔有一個爲ImageView的唯一XML訪問。

對於你必須在java中使用的菜單。

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

我也沒有在文檔上看到任何內容 - 但由於這基本上是由appcompat繪製的,我想知道是否有一些自動機制在引擎蓋下我不知道 - 菜單項是VectorDrawables的一個大用例 - 添加此解決方法使代碼變得醜陋 – ligi

+0

hm - @chrisbanes在他的博客文章的評論中聲明「Menu items work fine。你試圖用偏好來使用它嗎?「 – ligi

+0

我沒有必要添加這個,我的菜單項只是在沒有XML更改的情況下開箱即用。我正在使用23.0.4的支持庫。 –

5

我能夠通過在StateListDrawable(一個選擇器)包裹他們使用上預棒棒糖設備載體可繪。

更確切地說,我在XML創建的選擇繪製,然後加入他們單矢量繪製

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

然後我用我的菜單這個「包裹」繪製。如果你想了解更多關於它是如何工作的信息,請查看Chris Banes的非常有用的帖子this

+4

即使我把這些可繪製的東西包裹起來,我也會得到例外 – ligi

+0

我愛你的男人:)這是工作!!!!!!我有這個問題7天左右,總是搜索問題♥♥♥ –

+0

此解決方案不適用於support-library v 25.3.1 請使用此代替https://stackoverflow.com/a/38507596/4579783 – bshears

20

棒棒糖之前支持的版本,使用

com.android.support:appcompat-v7:24.0.0(或更高版本)

支持庫。

然後,而不是

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

使用這一個

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

非常感謝你 - 這對我們有效。你是怎麼知道這件事的? –

+0

注意:AppCompatDrawableManager是一個私有API,因此可以在任何時候破壞它。請參閱:https://code.google.com/p/android/issues/detail?id=216903#c13 –

+0

我得到同樣的問題,然後我發現支持庫已更新,並沒有提及任何地方....通過android開發人員的bug列表,我想通了...... –

相關問題