Android.content.res.es स्रोत $ NotFoundException प्राप्त करना: Android में संसाधन मौजूद होने पर भी अपवाद


89

कृपया मुझे बताएं कि मैं त्रुटि प्राप्त करने के लिए कहां गलत हूं।

मैं एक ऐप बना रहा हूं, जिसकी एक गतिविधि केवल लैंडस्केप मोड में है। इसलिए मैंने AndroidManifest.xml फ़ाइल में निम्न जोड़ा

<activity android:name=".LandScapeImageActivity" android:screenOrientation="landscape"></activity>

मैंने एक फ़ोल्डर बनाया है जैसे

/ Res / लेआउट भूमि

और उसमे see_today_landscape_layout नामक एक लेआउट जोड़ें।

और onCreate()मैंने निम्नलिखित जोड़ा

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.see_today_landscape_layout);
....
}

लेकिन जब मैं अपना ऐप चलाता हूं तो मुझे निम्न त्रुटि हो रही है

02-06 13:46:14.358: E/AndroidRuntime(13286): FATAL EXCEPTION: main
02-06 13:46:14.358: E/AndroidRuntime(13286): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mid.kew.activities/com.mid.kew.activities.LandScapeImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4066)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.access$2400(ActivityThread.java:135)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2140)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Looper.loop(Looper.java:144)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.main(ActivityThread.java:4937)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invokeNative(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invoke(Method.java:521)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at dalvik.system.NativeStart.main(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getValue(Resources.java:892)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:1869)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getLayout(Resources.java:731)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Activity.setContentView(Activity.java:1654)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.mid.kew.activities.LandScapeImageActivity.onCreate(LandScapeImageActivity.java:103)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
02-06 13:46:14.358: E/AndroidRuntime(13286):    ... 12 more

मैंने R.java में चेक किया हुआ पार किया और इसके पास ID 7f03002b के साथ संसाधन हैं जो अपवाद की तलाश में है और यह वहां मौजूद है ...

मैंने 5 बार कहने के लिए प्रोजेक्ट को साफ और पुनर्निर्माण किया, लेकिन अभी भी यह समस्या होती है।

अजीब बात यह है कि यह कल काम कर रहा था और यह आज काम नहीं कर रहा है। कोड समान है।


रिसोर्स आईडी # 0x7f03002b किसको संदर्भित करता है? आपको see_today_landscape_layout.xmlफ़ाइल की सामग्री प्रदान करनी चाहिए ।
a.ch.

हां इसका संदर्भ R.java के अनुसार see_today_landscape_layout.xml के संदर्भ में है
Nik


जब compile 'com.android.support:appcompat-v7:23.4.0'मैं v7:22.2.0'इसके साथ रहता हूं तो काम करने के लिए अपग्रेड करते समय मेरे पास यह मुद्दा था
स्टीफन

जवाबों:


36
  1. ग्रहण में, प्रोजेक्ट> क्लीन पर जाएं ...
  2. अपने प्रोजेक्ट का चयन करें, फिर ओके दबाएं
  3. एप्लिकेशन पुनः लोड करें

अगर ऐसा होता है तो r.java फ़ाइल को फिर से हटा दें। यह अपने आप उत्पन्न होगा।


2
जैसा कि मैंने पहले उल्लेख किया है ... मैंने बिन और जीन फ़ोल्डर्स को साफ किया और एप्लिकेशन का पुनर्निर्माण किया .. अभी भी काम नहीं कर रहा है ...
निक

128
यदि इससे आपकी समस्या ठीक नहीं हुई, तो इसे चेक मार्क क्यों मिला?
इकेडैंटे

1
यदि आप रिलीज़ ऐप पर ऐसा करते हैं तो आप क्या करते हैं?
दिनेश

220

मेरी हालत के लिए कारण के intलिए पैरामीटर ले रहा था TextView। मुझे एक उदाहरण दिखाते हैं

int i = 5;
myTextView.setText(i);

ऊपर त्रुटि जानकारी मिलती है।

यह परिवर्तित करके ठीक किया जा सकता intकरने के लिए Stringयह पसंद

myTextView.setText(String.valueOf(i));

जैसा कि आप लिखते हैं int, यह एक संसाधन की अपेक्षा करता है जो आप नहीं लिख रहे हैं। इसलिए एंड्रॉइड में intए सेट करने पर सावधान रहें String


धन्यवाद, यह काम किया, मैं इस तरह से करने की कोशिश कर रहा था: num2.setText (lotteryCharacters.charAt (2)) ;, फिर मैं बदलकर num2.setText (String.valueOf (lotteryractracters.charAt (2))) ...; और यह काम किया!
थ्रकनिरामन

1
मुझे आश्चर्य है कि valueOf (i) और "" + i के बीच क्या अंतर है?
पीटरब

पूरी तरह से अप्रत्याशित, महान पकड़! धन्यवाद
सिंह gunjot

1
XAML कोड के बारे में, मैं मूल्य कैसे निर्धारित कर सकता हूं। मेरा मामला XAML पर संपत्ति के लिए दशमलव मान सेट करना चाहिए
zquanghoangz

2
धन्यवाद, कारण यह है कि सेटटैक्स अतिभारित विधि है जो स्ट्रिंग और संसाधन आईडी दोनों को स्वीकार करता है। फिर आप एक इंट पास करते हैं जो संसाधन Id के लिए दिखता है
abedfar

12

जब से आप लेआउट को स्पष्ट रूप से सेट कर रहे हैं, तो आप कोशिश कर सकते हैं और इसे डिफ़ॉल्ट / लेआउट फ़ोल्डर में डाल सकते हैं / लेआउट-लैंड में नहीं, यदि आप चाहते हैं कि एंड्रॉइड स्वचालित रूप से आपके लिए रोटेशन को संभाल सके।


1
यदि फोन पोर्ट्रेट व्यू में है तो यह पोर्ट्रेट में होगा, जब आप फोन को घुमाएंगे तो यह लैंडस्केप में होगा। क्या आप इसे हमेशा परिदृश्य बनाने की कोशिश कर रहे हैं? फिर आपको जो करने की जरूरत है वह गतिविधि के अभिविन्यास को मेनिफेस्ट फ़ाइल में परिदृश्य में सेट करने के लिए है या कोड में इस प्रश्न को देखें stackoverflow.com/questions/2150287/…
mbwasi

मैंने किया है कि के रूप में मैं अपने प्रश्न में उल्लेख किया है '<गतिविधि Android: नाम = एंड्रॉयड: screenOrientation = "परिदृश्य" "LandScapeImageActivity।"> </ गतिविधि>'
Nik

1
आपको कॉन्फ़िगरेशन भाग याद आ रहे हैं <गतिविधि android: screenOrientation = "लैंडस्केप" android: configChanges = "ओरिएंटेशन | कीबोर्डहेड" एंड्रॉइड: नाम = "abcActivty" />
mbwasi

9

अपने लेआउट xml res/layout-landको res/layoutफ़ोल्डर से स्थानांतरित करने का प्रयास करें


करने के लिए लेआउट फ़ोल्डर?
रॉबर्ट

1
रेस / लेआउट-लैंड >> रेस / लेआउट फ़ोल्डर से
आशीष कुमार

मेरे लिए भी, कई बार हुआ
मार्कोस एवलोगिमेनोस

मैंने अपनी एक्सएमएल res/layout-sw600dpको res/layoutतब से स्थानांतरित कर दिया है, यह काम कर रहा है .. आपके आभार के लिए धन्यवाद ..
शैलेंद्र मद्दा

2

यह फोन में एक अलग भाषा के कारण हो सकता है, जिसके लिए आपके कोड की संपत्ति नहीं है। उदाहरण के लिए आपकी पसंद। xml को xml-en में रखा गया है और आप अपने ऐप को एक ऐसे फोन में चलाने की कोशिश कर रहे हैं जिसमें फ्रेंच का चयन किया गया है, ऐप क्रैश हो जाएगा।


हमेशा डिफ़ॉल्ट एसेट फ़ोल्डर बनाएं और फिर भाषा या ओरिएंटेशन विशिष्ट जोड़ें। यद्यपि यह यहाँ पर हो भी सकता है या नहीं भी हो सकता है :)
अहमद अली नासिर

2

मुझे यह त्रुटि अभी तक किसी अन्य कारण से मिली है:

मेरे पास फ़ाइल थी res/xml/data.xmlऔर मैं इसे Resourcesइस तरह से कक्षा में लोड करने की कोशिश कर रहा था :

Resources.getSystem().getXml(R.xml.data);

हालाँकि यह तरीका गलत है Resources.getSystem() एक वैश्विक साझा संसाधन ऑब्जेक्ट देता है जो केवल सिस्टम संसाधनों तक पहुँच प्रदान करता है।

सही तरीका इस प्रकार है (अंदर की गतिविधि से):

this.getResources().getXml(R.xml.data);

शीर्ष-स्तरीय फ़ंक्शंस या कक्षाओं से संसाधनों तक कैसे पहुंचें जो गतिविधि से विरासत में नहीं आते हैं?
विवेक यादव

2

मेरे मामले में ऐप बिल्ड के लिए मेरे बिल्ड.ग्रेडल में मेरा बिल्ड टूल्स संस्करण एक पुराने प्रोजेक्ट पर पुराना था। इसे अद्यतन करने से समस्या ठीक हो गई:

android {
    ...
    buildToolsVersion "19.0.1"
    ...

नवीनतम बिल्ड टूल संस्करण (25.0.1) में अपडेट किया गया और परियोजना को सिंक कर दिया गया और सब फिर से ठीक हो गया।


2

यह सुनिश्चित करने के लिए जांचें कि आपका आयात सही है या नहीं। मुझे इसी तरह की समस्या थी, जहां Rएंड्रॉइड सिस्टम Rफ़ाइल की ओर इशारा किया गया था , न कि मेरा स्थानीय।


1

मैंने buildकिसी प्रोजेक्ट के अंदर फ़ोल्डर हटा दिए हैं । एंड्रॉइड स्टूडियो में इसे साफ करने और फिर से बनाने के बाद। फिर build.gradle और AndroidManifest में त्रुटियों को ठीक किया।


1

यह कुछ परेशानी का कारण भी बन सकता है: संयोग से मेरा एक लेआउट मेरे टैबलेट संसाधन फ़ोल्डर में पार्क किया गया था, इसलिए मुझे यह त्रुटि केवल फोन लेआउट के साथ मिली। फ़ोन लेआउट में बस कोई उपयुक्त लेआउट फ़ाइल नहीं थी।

मैंने सही मानक फ़ोल्डर में लेआउट फ़ाइल को स्थानांतरित करने और एक निम्नलिखित परियोजना के पुनर्निर्माण के बाद फिर से काम किया।


क्या आप इस बारे में अधिक जानकारी प्रदान कर सकते हैं कृपया stackoverflow.com/help/how-to-answer
अमीर बैनर

0

सुनिश्चित करें कि आप जिस R को इंगित कर रहे हैं वह सही है। मुझे इसके समान ही एक समस्या थी, जहां एक्लिप्स द्वारा एक आयात डाला गया था जो कि प्रोजेक्ट एक के बजाय सिस्टम आर फ़ाइल को इंगित करता था। इसमें काफी सिर खुजलाया। उम्मीद है की यह मदद करेगा।


0

आपके पास अपने xml में परिदृश्य के लिए स्क्रीन ओरिएंटेशन सेट है। यदि आपने इस फ़ाइल को जनरेट करने के लिए ग्रहण का उपयोग किया है, तो इसे रेस / लेआउट-लैंड / फोल्डर के तहत बनाया जाएगा। लेकिन जब आप पोर्ट्रेट मोड एप्लिकेशन में गतिविधि खोलते हैं, तो रिज / लेआउट-पोर्ट / फ़ोल्डर में xml खोजेगा या रेगुलर रेज / लेआउट / । यदि आपके पास पोर्ट्रेट मोड के लिए xml नहीं है तो आपका एप्लिकेशन क्रैश हो जाएगा।


0

मैंने इस तरह से तय किया है:

अपने रिसोर्स डायरेक्टरी नाम में एक फोल्डर बनाएं "drawable-nodpi"और फिर इस डायरेक्टरी में अपने सभी रिसोर्स को दूसरों की ड्रॉएबल डायरेक्टरी से मूव करें।

अब अपने प्रोजेक्ट को साफ करें और फिर पुनर्निर्माण करें। फिर से चलाएं उम्मीद है कि यह इस बार काम करेगा बिना किसी संसाधन के अपवाद नहीं मिला।


इसने मुझे सही रास्ते की ओर इशारा किया लेकिन कृपया इस पोस्ट को ध्यान में रखें: stackoverflow.com/questions/24682094/…
एड्रियन

0

मुझे यह त्रुटि तब हुई जब मैं getInt ("आईडी") का उपयोग करके वन इंटेंट से बंडल डेटा तक पहुंचने की कोशिश कर रहा था।

मैंने इसे गेटस्ट्रिंग ("आईडी") का उपयोग करके हल किया।

गतिविधि 1 से मेरे पास था

Intent intent=new Intent(this,ActivityB.class);
intent.putExtra("data",data)// 
startActivity(intent);

गतिविधि B पर,

Bundle bundle=getIntent().getExtras();
if(extras!=null){
// int x=extras.getInt("Data"); This Line gave me error int 
x=Integer.parseInt(extras.getString("Data")); // This solved the problem.
}

1
कृपया अपने उत्तर को यह बताने के लिए अपडेट करें कि यह समस्या कैसे हल करता है, और इस 5 साल पुराने प्रश्न के उत्क्रमित और स्वीकृत उत्तरों में सुधार करता है। देखें: कैसे मैं एक अच्छा जवाब लिख सकता हूं
फ्लफीकैट

कृपया अपने उत्तर का समर्थन करने के लिए कुछ विवरण और स्पष्टीकरण जोड़ने पर विचार करें ताकि यह दूसरों के लिए उपयोगी हो
सौविक घोष

0

मेरे लिए कैश अमान्य होना और पुनः आरंभ करना काम नहीं आया। मैंने .idea और .gradle फ़ोल्डर हटा दिए हैं। यदि आप ऐसा करते हैं, तो यह मत भूलिए कि बिल्ड लॉग या कुछ और चीजें जैसे कि दूर जा सकती हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.