9

के लिए संसाधन $ NotFoundException प्राप्त करना मुझे पुराने (प्री-एल) डिवाइस पर संसाधन $ notfoundexception मिल रहा है। मैं नीचे पूर्ण stacktrace सहित हूँ।एंड्रॉइड: abc_ic_ab_back_material

समर्थन पुस्तकालय का मेरा संस्करण नवीनतम (24.1.0) है, और मैं अपने Gradle फ़ाइल में शामिल किया है लाइन:

vectorDrawables.useSupportLibrary = true 

मेरे आधार विषय एक noactionbar विषय है - "Theme.AppCompat

@SuppressLint("PrivateResource") final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_material); 

क्या ख सकता है: .Light.NoActionBar "

दुर्घटना मेरी कोड में इस लाइन, जहां मैं एक समर्थन-उपकरण पट्टी में वापस जाएं तीर संदर्भ आदेश बाद में इसे बदलने के लिए में पर हो रहा है रंग है ई इसका कारण है? यह कोड एल या ऊपर वाले सभी उपयोगकर्ताओं के लिए ठीक काम करता है।

07-19 22:36:57.029 9330-9330/mypkg E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to resume activity {mypkg/mypkg.activites.myActivity}: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020013 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2619) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2647) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
    at android.app.ActivityThread.access$600(ActivityThread.java:138) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4929) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020013 
    at android.content.res.Resources.loadDrawable(Resources.java:1957) 
    at android.content.res.Resources.getDrawable(Resources.java:673) 
    at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:354) 
    at mypkg.base.mymethod(myactivity.java:100) 
    at mypkg.mymethod(myactivity.java:100) 
    at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:511) 
    at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:178) 
    at android.app.Activity.performResume(Activity.java:5341) 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2599) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2647) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
    at android.app.ActivityThread.access$600(ActivityThread.java:138) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4929) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector 
    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:877) 
    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:818) 
    at android.content.res.Resources.loadDrawable(Resources.java:1954) 
    at android.content.res.Resources.getDrawable(Resources.java:673) 
    at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:354) 
    at mypkg/mymethod(myactivity.java:100) 
    at mypkg/mymethod(myactivity.java:100) 
    at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:511) 
    at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:178) 
    at android.app.Activity.performResume(Activity.java:5341) 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2599) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2647) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
    at android.app.ActivityThread.access$600(ActivityThread.java:138) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4929) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
    at dalvik.system.NativeStart.main(Native Method) 

उत्तर

22

इसका जवाब पता चला होने के लिए फ़ाइलों को मेरी रेस में मेरे ऐप पर यह backport अलग तरह से व्यवहार

https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88#.xucjbsts0

यह आप सभी की जरूरत गतिविधि कि संसाधन का उपयोग करेगा की शुरुआत में में इस लाइन को जोड़ने के लिए है कि पता चला है:

इस गाइड के निचले भाग में दफन
static { 
     AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
    } 
+3

नहीं है, मैं इसे काम नहीं कर सकता। आपके द्वारा उल्लिखित रेखा को जोड़ा गया है, लेकिन एप्लिकेशन वैसे भी दुर्घटनाग्रस्त हो जाता है। स्टैकट्रैक वही है, जैसा कि आपके प्रश्न में है। –

+0

क्या आपने gradup फ़ाइल में उपयोग सपोर्टपोर्ट लाइब्रेरी लाइन भी जोड़ दी है और क्या आप नवीनतम समर्थन लाइब्रेरी संस्करण का उपयोग कर रहे हैं? – Jon

+1

हां। मैं अनुमान लगा रहा हूं कि समस्या यह है क्योंकि आपका समाधान केवल क्रियाकलापों के लिए काम करता है, AppCompatActivty का विस्तार करता है, लेकिन मेरा वरीयता सक्रियता है। –

0

निजी संसाधनों अपने संकलन समय पर और ठीक runtime..to मैं आमतौर पर अपमानजनक निजी संसाधन लेने के लिए और

+0

धन्यवाद। मैंने संसाधन लेने और इसे मेरे drawables फ़ोल्डर में बनाने की कोशिश की है। यह शिकायत करता है कि संसाधन नहीं मिला है, इसलिए मैंने यह सुनिश्चित करने के लिए नाम बदल दिया है कि यह समर्थन लाइब्रेरी संस्करण का संदर्भ देने का प्रयास नहीं करेगा - और यह अभी भी शिकायत करता है कि संसाधन नहीं मिला है। – Jon

+0

जब आप इसे पोर्ट करते हैं तो आपको उस नामस्थान को बदलना होगा जिसका आप उल्लेख कर रहे हैं क्योंकि अब एंड्रॉइड एम्सस्पेस –

2

कृपया सुनिश्चित करें कि आप AppCompatActivity के बजाय गतिविधि का उपयोग कर रहे हैं। यदि आप AppCompat की थीम का उपयोग कर रहे हैं, तो आपको इसकी गतिविधि का उपयोग करने की भी आवश्यकता है।

0

मैं आवेदन संदर्भ का उपयोग कर रहा था जब ContextCompat.getDrawable() जो भी Resources$NotFoundException और अब निम्न संदेश भले ही सब कुछ ठीक स्थापित किया गया था के साथ अनुप्रयोग क्रैश हो बुला:

संसाधन आप उपयोग करना चाहते हैं तो एक वेक्टर संसाधन, आप एक असमर्थित तरीके से संदर्भित कर सकते हैं। अधिक जानकारी के लिए AppCompatDelegate.setCompatVectorFromResourcesEnabled() देखें।

सभी मैं करना था दृश्य की Context को बदलने के लिए किया गया था।

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

जब आप एक TextView के लिए एक drawable के रूप में उपयोग (उपयोगी हो सकता है यानी DrawableLeft: :)

0

एक अन्य समाधान,
अलावा AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
के लिए एक और drawable में अपने वेक्टर drawable रैप करने के लिए है)

0

स्वीकृत उत्तर सभी मामलों को शामिल नहीं किया गया है। यह एंड्रॉइड 4.0.3/4.1.1/4.1.2 प्लेटफ़ॉर्म पर 25.x.x समर्थन लाइब्रेरी के साथ काम नहीं करेगा। abc_ic_ab_back_material.xml के साथ समस्या को ठीक करने का सही तरीका आपकी थीम में homeAsUpIndicator विशेषता को ओवरराइड करना है। उदाहरण के लिए, मेरी थीम Theme.AppCompat.Light.NoActionBar से विरासत में मिली है। उल्लिखित विशेषता के मूल्य के रूप में, आप @drawable/abc_ic_ab_back_mtrl_am_alpha या अपने कस्टम 'बैक' को खींचने योग्य उपयोग कर सकते हैं।