2016-03-03 11 views
12
नीचे

जब मैं सक्षम

vectorDrawables.useSupportLibrary = true 

मैं किटकैट पर और उपकरणों के नीचे resourceNotFoundExceptions का एक बहुत मिलता है। मैं मेनू के लिए NavigationView के लिए है और यह भी अनुप्रयोग के साथ ImageViews के लिए इस मिल: NavigationView

के लिए 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) 

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

आपका ग्रेडल संस्करण क्या है? – Sayem

+1

क्या आप समर्थन लाइब्रेरी v23.2.0 का उपयोग कर रहे हैं? और आपके build.gradle में दस्तावेज़ों द्वारा सुझाए गए संशोधन हैं (और इस उत्तर में पाया जा सकता है: http://stackoverflow.com/a/35624744/4860513)? – W0rmH0le

+0

2.11 और बिल्ड-प्लगइन 2.0.0-बीटा 6 – ligi

उत्तर

20

मैं इस समस्या पाया: मैं drawable-anydpi में मेरी वेक्टर ड्रॉएबल था/- यह इस दुर्घटना का उत्पादन - जब मैं ड्रॉएबल drawable में ले जाएँ/यह ठीक

+0

धन्यवाद आप! यह असली जवाब है। –

+0

इस # डिग्री $% और £ § समस्या को हल करने के लिए एक घंटे बिताया ... – Massimo

+2

धन्यवाद, 'ड्रायबल' से' ड्रॉइंग-नोडपी 'से मेरे लिए काम किया गया। –

4

जहाँ तक मैं डॉक्स पर imageView के लिए केवल XML पहुंच नहीं है पढ़ा है।

मेनू के लिए आपको जावा में उपयोग करना होगा।

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

मैंने दस्तावेज़ों पर कुछ भी नहीं देखा - लेकिन चूंकि यह मूल रूप से एपकोम्पेट द्वारा खींचा गया है, इसलिए मैं सोच रहा था कि कुछ automatism है हुड के तहत मुझे पता नहीं है - मेन्यू-आइटम वेक्टर ड्रावेबल्स के लिए एक बड़ा उपयोग-मामला है - इस वर्कअराउंड को कोड को बदसूरत – ligi

+0

एचएम - @ क्रिसिसबेस ने अपने ब्लॉग-पोस्ट की टिप्पणियों में कहा है "मेनू आइटम ठीक काम करते हैं। आप वरीयताओं के साथ इसका उपयोग करने की कोशिश कर रहे हैं? " – ligi

+0

मुझे इसे जोड़ने की ज़रूरत नहीं थी और मेरे मेनू आइटम बॉक्स के बाहर काम नहीं किए बिना एक्सएमएल परिवर्तन के साथ काम किया। मैं समर्थन पुस्तकालय के 23.0.4 का उपयोग कर रहा हूँ। –

5

मैं उन्हें एक StateListDrawable (एक चयनकर्ता) में लपेटकर द्वारा पूर्व लॉलीपॉप उपकरणों पर वेक्टर ड्रॉएबल उपयोग करने में सक्षम था।

दरअसल, मैं XML में एक चयनकर्ता drawable बनाया, और फिर एक एकल वेक्टर drawable उन में कहा:

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

मैं तो मेरे मेनू में इस "लिपटे" drawable का उपयोग करें। यदि आप यह कैसे काम करते हैं, इस बारे में अधिक जानकारी चाहते हैं, तो क्रिस बनस द्वारा this बहुत उपयोगी पोस्ट देखें।

+4

मुझे अपवाद भी मिलते हैं जब मैं इस – ligi

+0

जैसे ड्रॉबल्स को लपेटता हूं, मैं तुमसे प्यार करता हूँ :) यह काम है !!!!!! मुझे यह समस्या 7 दिनों के बारे में है और हमेशा समस्याओं की खोज करें ♥♥♥ –

+0

यह समाधान समर्थन-पुस्तकालय 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 एक निजी एपीआई है इसलिए इसे किसी भी समय टूटा जा सकता है। देखें: https://code.google.com/p/android/issues/detail?id=216903#c13 –

+0

मुझे एक ही समस्या मिली, फिर मैंने पाया कि समर्थन लाइब्रेरी अपडेट की गई थी और इसका उल्लेख कहीं भी नहीं किया गया है .... एंड्रॉइड डेवलपर कीड़े सूची के माध्यम से मुझे पता चला ... –

0

आप vectorDrawableComapt का उपयोग करने और XML में ठीक से सेट कर रहे हैं यह सही तरीके से करना याद रखें:

app:srcCompat="@drawable/ic_add" 

स्रोत: https://android-developers.blogspot.co.uk/2016/02/android-support-library-232.html

+0

यह केवल 'ImageView' से संबंधित है, जैसा कि आप संदर्भित करते हैं। – skywall

संबंधित मुद्दे