รับ android.content.res.Resources $ NotFoundException: ข้อยกเว้นแม้ว่าทรัพยากรจะมีอยู่ใน Android


90

โปรดแจ้งให้เราทราบว่าฉันทำผิดพลาดตรงไหนเพื่อรับข้อผิดพลาด

ฉันกำลังสร้างแอปที่มีกิจกรรมอย่างใดอย่างหนึ่งเพื่อให้อยู่ในโหมดแนวนอนเท่านั้น ดังนั้นฉันจึงเพิ่มสิ่งต่อไปนี้ในไฟล์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 ครั้ง แต่ปัญหายังคงเกิดขึ้น

จุดแปลกคือมันใช้งานได้เมื่อวานนี้และมันไม่ทำงานในวันนี้ รหัสก็เหมือนกัน


Resource ID # 0x7f03002b หมายถึงอะไร คุณควรระบุเนื้อหาของsee_today_landscape_layout.xmlไฟล์
ก.

ใช่มันอ้างถึง see_today_landscape_layout.xml ตาม R.java
Nik


ฉันมีปัญหานี้เมื่ออัปเกรดเพื่อใช้compile 'com.android.support:appcompat-v7:23.4.0'ถ้าฉันยังใช้v7:22.2.0'งานได้
stephen

คำตอบ:


36
  1. ใน eclipse ไปที่ Project> Clean ...
  2. เลือกโครงการของคุณจากนั้นกดตกลง
  3. เปิดแอปอีกครั้ง

หากเกิดขึ้นอีกครั้งให้ลบไฟล์ r.java มันจะสร้างโดยอัตโนมัติ


2
ดังที่ได้กล่าวไปแล้ว ... ฉันล้างโฟลเดอร์ bin และ gen และสร้างแอปใหม่.. ยังใช้งานไม่ได้ ...
Nik

131
หากวิธีนี้ไม่สามารถแก้ไขปัญหาของคุณได้เหตุใดจึงได้รับเครื่องหมายถูก
IcedDante

1
คุณจะทำอย่างไรหากสิ่งนี้เกิดขึ้นในแอปรีลีส
Dinesh

220

สำหรับเงื่อนไขของฉันสาเหตุคือการใช้intพารามิเตอร์สำหรับTextView. ให้ฉันดูตัวอย่าง

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

รับข้อมูลข้อผิดพลาดด้านบน

สามารถแก้ไขได้โดยการแปลงintเป็นStringแบบนี้

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

ขณะที่คุณเขียนintคาดว่าทรัพยากรจะไม่ใช่ข้อความที่คุณกำลังเขียน ดังนั้นโปรดใช้ความระมัดระวังในการตั้งค่าintเป็นStringใน Android


ขอบคุณมันใช้งานได้ฉันพยายามทำสิ่งนี้: num2.setText (LotteryCharacters.charAt (2)); จากนั้นฉันก็เปลี่ยนเป็น num2.setText (String.valueOf (LotteryCharacters.charAt (2))); ... และมันได้ผล!
TharakaNirmana

1
ฉันสงสัยว่า valueOf (i) กับ "" + i ต่างกันอย่างไร
peterb

ไม่คาดคิดโดยสิ้นเชิงการจับที่ยอดเยี่ยม! ขอบคุณ
gunjot singh

1
เกี่ยวกับรหัส XAML ฉันจะตั้งค่าได้อย่างไร กรณีของฉันควรตั้งค่าทศนิยมสำหรับคุณสมบัติใน XAML
zquanghoangz

2
ขอบคุณเหตุผลก็คือ setText เป็นเมธอดที่โอเวอร์โหลดซึ่งยอมรับทั้ง String และรหัสทรัพยากร จากนั้นคุณส่ง int เพื่อค้นหารหัสทรัพยากร
abedfar

13

เนื่องจากคุณกำลังตั้งค่าเลย์เอาต์อย่างชัดเจนคุณอาจต้องการลองวางไว้ในโฟลเดอร์เริ่มต้น / เลย์เอาต์ที่ไม่อยู่ใน / layout-land เนื่องจากนั่นคือถ้าคุณต้องการให้ Android จัดการการหมุนให้คุณโดยอัตโนมัติ


1
หากโทรศัพท์อยู่ในมุมมองแนวตั้งโทรศัพท์จะอยู่ในแนวตั้งเมื่อคุณหมุนโทรศัพท์จะอยู่ในแนวนอน คุณพยายามทำให้เป็นแนวนอนอยู่เสมอหรือไม่? จากนั้นสิ่งที่คุณต้องทำคือตั้งค่าการวางแนวของกิจกรรมเป็นแนวนอนในไฟล์ Manifest หรือในโค้ดดูคำถามนี้stackoverflow.com/questions/2150287/…
mbwasi

ฉันได้ทำตามที่ได้กล่าวไว้ในคำถามของฉัน '<activity android: name = ". LandScapeImageActivity" android: screenOrientation = "landscape"> </activity>'
Nik

1
คุณไม่มีส่วน configchanges <activity android: screenOrientation = "landscape" android: configChanges = "orientation | keyboardHidden" android: name = "abcActivty" />
mbwasi

10

ลองย้าย xml เลย์เอาต์ของคุณจากres/layout-landไปยังres/layoutโฟลเดอร์


ไปยังโฟลเดอร์เค้าโครง?
Robert

1
จากโฟลเดอร์ res / layout-land >> res / layout
Ashish Kumar

เกิดขึ้นกับฉันหลายครั้งเช่นกัน
Markos Evlogimenos

ผมย้าย XML ของฉันจากres/layout-sw600dpไปres/layoutแล้วก็ทำงาน .. ขอขอบคุณสำหรับ ans ของคุณ ..
Shailendra Madda

2

กรณีนี้เกิดขึ้นได้เนื่องจากภาษาอื่นในโทรศัพท์ซึ่งรหัสของคุณไม่มีเนื้อหา ตัวอย่างเช่น your Preferences.xml วางอยู่ใน xml-en และคุณกำลังพยายามเรียกใช้แอปของคุณในโทรศัพท์ที่เลือกภาษาฝรั่งเศสแอปจะหยุดทำงาน


สร้างโฟลเดอร์สินทรัพย์เริ่มต้นเสมอจากนั้นเพิ่มภาษาหรือการวางแนวเฉพาะรายการ แม้ว่าจะเป็นเช่นนั้นหรือไม่ก็ตามที่นี่ :)
Ahmad Ali Nasir

2

ฉันได้รับข้อผิดพลาดนี้จากสาเหตุอื่น:

ฉันมีไฟล์res/xml/data.xmlและพยายามโหลดด้วยResourcesคลาสดังนี้:

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

อย่างไรก็ตามสิ่งนี้ไม่ถูกต้องเนื่องจากเมธอดResources.getSystem()ส่งคืนอ็อบเจ็กต์รีซอร์สที่แชร์ร่วมกันที่ให้การเข้าถึงเฉพาะรีซอร์สระบบ

วิธีที่ถูกต้องมีดังนี้ (จากภายในกิจกรรม):

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

จะเข้าถึงทรัพยากรจากฟังก์ชันระดับบนสุดหรือคลาสที่ไม่ได้รับมาจากกิจกรรมได้อย่างไร?
Vivek Yadav

2

ในกรณีของฉันเวอร์ชัน Build Tools ใน build.gradle ของฉันสำหรับโมดูลแอปล้าสมัยในโครงการเก่า การอัปเดตช่วยแก้ไขปัญหา:

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

อัปเดตเป็นเวอร์ชันล่าสุดของเครื่องมือสร้าง (25.0.1) และซิงค์โครงการและทุกอย่างก็กลับมาดีอีกครั้ง


2

ตรวจสอบให้แน่ใจว่าการนำเข้าของคุณถูกต้อง ฉันมีปัญหาคล้ายกันที่Rชี้ไปที่Rไฟล์ระบบ Android ไม่ใช่ไฟล์ในเครื่องของฉัน


1

ฉันลบโฟลเดอร์buildภายในโครงการ หลังจากทำความสะอาดและสร้างใหม่ใน Android Studio จากนั้นแก้ไขข้อผิดพลาดใน build.gradle และ AndroidManifest


1

นอกจากนี้ยังอาจทำให้เกิดปัญหา: บังเอิญหนึ่งในเค้าโครงของฉันจอดอยู่ในโฟลเดอร์ทรัพยากรแท็บเล็ตของฉันดังนั้นฉันจึงได้รับข้อผิดพลาดนี้เฉพาะกับรูปแบบโทรศัพท์ เค้าโครงโทรศัพท์ไม่มีไฟล์เค้าโครงที่เหมาะสม

ฉันทำงานอีกครั้งหลังจากย้ายไฟล์เค้าโครงในโฟลเดอร์มาตรฐานที่ถูกต้องและสร้างโครงการต่อไปนี้ใหม่


คุณช่วยให้ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ไหมstackoverflow.com/help/how-to-answer
Rich Benner

0

ตรวจสอบให้แน่ใจว่า R ที่คุณชี้ไปนั้นถูกต้อง ฉันมีปัญหาที่คล้ายกันมากกับสิ่งนี้ซึ่ง Eclipse ถูกแทรกโดย Eclipse ซึ่งชี้ไปที่ไฟล์ System R แทนที่จะเป็นโปรเจ็กต์ เอามาก ๆ เกาหัว หวังว่านี่จะช่วยได้


0

คุณตั้งค่าการวางแนวหน้าจอเป็นแนวนอนใน xml ของคุณ หากคุณใช้ eclipse เพื่อสร้างไฟล์นี้ไฟล์จะถูกสร้างขึ้นภายใต้ res / layout-land / folder แต่เมื่อคุณเปิดกิจกรรมในแอปพลิเคชันโหมดแนวตั้งจะค้นหา xml ใน res / layout-port / folder หรือ res / layout / ปกติ . หากคุณไม่มี xml สำหรับโหมดแนวตั้งแอปพลิเคชันของคุณจะหยุดทำงาน


0

ฉันได้แก้ไขโดยวิธีนี้:

สร้างโฟลเดอร์ในชื่อไดเร็กทอรีทรัพยากรของคุณ"drawable-nodpi"จากนั้นย้ายทรัพยากรทั้งหมดในไดเร็กทอรีนี้จากไดเร็กทอรีที่วาดได้อื่น

ตอนนี้ทำความสะอาดโครงการของคุณแล้วสร้างใหม่ เรียกใช้อีกครั้งหวังว่าจะใช้งานได้ในครั้งนี้โดยไม่มีข้อยกเว้นไม่พบทรัพยากรใด ๆ


สิ่งนี้ชี้ให้ฉันไปถูกทาง แต่โปรดจำไว้ว่าโพสต์นี้: stackoverflow.com/questions/24682094/…
Adrian

0

ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามเข้าถึงข้อมูล Bundle จาก One Intent โดยใช้ getInt ("ID")

ฉันแก้ไขโดยใช้ getString ("ID")

จาก Activity1 ฉันมี

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 ปีนี้ ดู: ฉันจะเขียนคำตอบที่ดีได้อย่างไร
FluffyKitten

โปรดพิจารณาเพิ่มรายละเอียดและคำอธิบายเพื่อสนับสนุนคำตอบของคุณเพื่อให้เป็นประโยชน์กับผู้อื่น
Souvik Ghosh

0

สำหรับฉันแคชไม่ถูกต้องและการรีสตาร์ทไม่ทำงาน ฉันลบโฟลเดอร์ .idea และ. gradle หากคุณทำเช่นนั้นอย่าลืมว่าสิ่งต่างๆเช่นบันทึกการสร้างหรือบางอย่างอาจหายไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.