Mendapatkan android.content.res.Resources $ NotFoundException: pengecualian bahkan saat resource ada di android

89

Tolong beri tahu saya di mana kesalahan saya untuk mendapatkan kesalahan.

Saya membuat aplikasi yang salah satu aktivitasnya hanya dalam mode lanskap. Jadi saya menambahkan yang berikut ini di file AndroidManifest.xml

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

Saya telah membuat folder seperti

/ res / layout-land

dan tambahkan tata letak yang disebut see_today_landscape_layout di dalamnya.

dan onCreate()saya menambahkan yang berikut ini

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

Tetapi ketika saya menjalankan aplikasi saya, saya mendapatkan kesalahan berikut

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

Saya telah mencentang di R.java dan memiliki sumber daya dengan ID 7f03002b yang dicari pengecualian dan ada di sana ...

Saya membersihkan dan membangun kembali proyek untuk katakanlah 5 kali, tetapi masalah tetap terjadi.

Hal yang aneh adalah bahwa ini berfungsi kemarin dan tidak berfungsi hari ini. Kodenya sama.

Nik
sumber
Apa yang dimaksud dengan ID Sumber Daya # 0x7f03002b? Anda harus memberikan konten see_today_landscape_layout.xmlfile.
a.ch.
ya itu mengacu pada see_today_landscape_layout.xml sesuai R.java
Nik
Saya punya masalah ini ketika upgrade ke penggunaan compile 'com.android.support:appcompat-v7:23.4.0'jika saya tinggal dengan v7:22.2.0'kerjanya
stephen

Jawaban:

36
  1. di eclipse, buka Project> Clean ...
  2. pilih proyek Anda, lalu tekan OK
  3. luncurkan kembali aplikasi

jika sudah terjadi lagi hapus file r.java tersebut. itu akan menghasilkan secara otomatis.

prakash
sumber
2
seperti yang saya sebutkan sebelumnya ... Saya menghapus folder bin dan gen dan membangun kembali aplikasi .. masih tidak berfungsi ...
Nik
128
Jika ini tidak memperbaiki masalah Anda, mengapa mendapat tanda centang?
IcedDante
1
apa yang Anda lakukan jika ini terjadi pada aplikasi rilis?
Dinesh
220

Untuk kondisi saya, penyebabnya adalah mengambil intparameter TextView. Mari saya tunjukkan sebuah contoh

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

mendapatkan info kesalahan di atas.

Ini bisa diperbaiki dengan mengubahnya intmenjadi Stringseperti ini

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

Saat Anda menulis int, ia mengharapkan sumber daya bukan teks yang Anda tulis. Jadi berhati-hatilah saat menyetel intsebagai Stringdi Android.

Yekmer Simsek
sumber
Terima kasih, berhasil, saya mencoba melakukan seperti ini: num2.setText (lotteryCharacters.charAt (2)) ;, lalu saya berubah menjadi num2.setText (String.valueOf (lotteryCharacters.charAt (2))); ... dan berhasil!
TharakaNirmana
1
Saya ingin tahu apa perbedaan antara valueOf (i) dan "" + i?
peterb
Benar-benar tak terduga, Tangkapan yang bagus! Terima kasih
gunjot singh
1
Bagaimana dengan kode XAML, bagaimana cara mengatur nilainya. Kasus saya harus menetapkan nilai desimal untuk properti di XAML
zquanghoangz
2
Terima kasih, alasannya adalah setText adalah metode kelebihan beban yang menerima String dan ID sumber daya. Kemudian Anda meneruskan int itu mencari sumber daya Id
abedfar
12

Karena Anda menyetel tata letak secara eksplisit, Anda mungkin ingin mencoba dan meletakkannya di folder default / layout bukan di / layout-land karena itu jika Anda ingin Android secara otomatis menangani rotasi untuk Anda.

mbwasi
sumber
1
Jika ponsel dalam tampilan potret, ponsel akan potret, sedangkan saat diputar ponsel akan dalam lanskap. Apakah Anda mencoba membuatnya selalu lanskap? Kemudian yang perlu Anda lakukan adalah mengatur orientasi aktivitas ke lanskap di file Manifest atau dalam kode, lihat Pertanyaan ini stackoverflow.com/questions/2150287/…
mbwasi
Saya telah melakukannya seperti yang telah saya sebutkan dalam pertanyaan saya '<activity android: name = ". LandScapeImageActivity" android: screenOrientation = "landscape"> </activity>'
Nik
1
Anda kehilangan bagian configchanges <activity android: screenOrientation = "landscape" android: configChanges = "orientasi | keyboardHidden" android: name = "abcActivty" />
mbwasi
9

Coba pindahkan layout xml Anda dari res/layout-landke res/layoutfolder

Ashish Kumar
sumber
ke folder tata letak?
Robert
1
dari res / layout-land >> folder res / layout
Ashish Kumar
Terjadi pada saya juga, beberapa kali
Markos Evlogimenos
Saya memindahkan xml saya dari res/layout-sw600dphingga res/layoutkemudian berhasil .. Terima kasih atas
jawaban
2

Hal ini dapat terjadi karena bahasa yang berbeda di ponsel yang asetnya tidak dimiliki kode Anda. Misalnya preference.xml Anda ditempatkan di xml-en dan Anda mencoba menjalankan aplikasi di ponsel yang dipilih dalam bahasa Prancis, aplikasi akan macet.

Arslan Mehboob
sumber
Selalu buat folder aset default dan kemudian tambahkan bahasa atau orientasi tertentu. Meskipun ini mungkin atau mungkin tidak terjadi di sini :)
Ahmad Ali Nasir
2

Saya mendapat kesalahan ini dari alasan lain:

Saya memiliki file res/xml/data.xmldan saya mencoba memuatnya dengan Resourceskelas seperti ini:

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

Namun ini tidak benar karena metode ini Resources.getSystem()mengembalikan objek Sumber Daya bersama global yang menyediakan akses ke sumber daya sistem saja.

Cara yang benar adalah sebagai berikut (dari dalam Activity):

this.getResources().getXml(R.xml.data);
astasiak
sumber
Bagaimana cara mengakses sumber daya dari fungsi tingkat atas atau kelas yang tidak mewarisi dari Aktivitas?
Vivek Yadav
2

Dalam kasus saya, versi Alat Bangun saya di build.gradle saya untuk modul aplikasi sudah usang pada proyek lama. Memperbarui itu memperbaiki masalah:

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

Diperbarui ke versi alat build terbaru (25.0.1) dan menyinkronkan proyek dan semuanya baik-baik saja.

Tash Pemhiwa
sumber
2

Periksa untuk memastikan bahwa impor Anda sudah benar. Saya memiliki masalah serupa saat Rmenunjuk ke Rfile sistem Android , bukan yang lokal saya.

Ray Benjamin
sumber
1

Saya menghapus folder builddi dalam proyek. Setelah dibersihkan dan dibangun kembali di Android Studio. Kemudian memperbaiki error di build.gradle dan AndroidManifest.

CoolMind
sumber
1

Ini juga dapat menyebabkan beberapa masalah: Secara tidak sengaja salah satu tata letak saya diparkir di folder sumber daya tablet, jadi saya mendapatkan kesalahan ini hanya dengan tata letak telepon. Tata letak telepon tidak memiliki file tata letak yang sesuai.

Saya bekerja lagi setelah memindahkan file tata letak di folder standar yang benar dan membangun kembali proyek berikut.

wolwe
sumber
Bisakah Anda memberikan informasi lebih lanjut tentang ini, harap stackoverflow.com/help/how-to-answer
Rich Benner
0

Pastikan huruf R yang Anda tunjuk sudah benar. Saya memiliki masalah yang sangat mirip dengan ini, di mana impor dimasukkan oleh Eclipse yang menunjuk ke file System R daripada yang proyek. Butuh banyak garukan kepala. Semoga ini membantu.

Rben
sumber
0

Anda memiliki orientasi layar yang disetel ke lanskap di xml Anda. Jika Anda telah menggunakan eclipse untuk menghasilkan file ini, itu akan dibuat di res / layout-land / folder. Tetapi ketika Anda membuka aktivitas dalam mode Portrait, aplikasi akan mencari xml di res / layout-port / folder atau res / layout / biasa . Jika Anda tidak memiliki xml untuk mode potret, aplikasi Anda akan macet.

Prakash
sumber
0

Saya telah memperbaikinya dengan cara ini:

Buat folder di nama direktori sumber daya Anda "drawable-nodpi"dan kemudian pindahkan milik Anda semua sumber daya dalam direktori ini dari direktori drawable lainnya.

Sekarang bersihkan proyek Anda dan kemudian buat kembali. Jalankan lagi semoga akan berhasil kali ini tanpa sumber daya apa pun kecuali yang ditemukan.

0xAliHn
sumber
Ini mengarahkan saya ke jalur yang benar tetapi harap diingat posting ini: stackoverflow.com/questions/24682094/…
Adrian
0

Saya mendapat kesalahan ini saat mencoba mengakses data Bundle dari One Intent dengan menggunakan getInt ("ID").

Saya menyelesaikannya dengan menggunakan getString ("ID").

Dari Aktivitas1 yang saya miliki

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

Pada Aktivitas 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.
}
ukurikiyeyesu dieudonne
sumber
1
Harap perbarui jawaban Anda untuk menjelaskan bagaimana ini menyelesaikan masalah, dan meningkatkan jawaban yang disukai dan diterima yang sudah dimiliki oleh pertanyaan berusia 5 tahun ini. Lihat: Bagaimana cara menulis jawaban yang bagus .
FluffyKitten
Harap pertimbangkan untuk menambahkan beberapa detail dan penjelasan untuk mendukung jawaban Anda sehingga berguna bagi orang lain
Souvik Ghosh
0

Bagi saya pembatalan cache dan restart tidak berhasil. Saya menghapus folder .idea dan .gradle. Jika Anda melakukan itu, jangan lupa bahwa hal-hal seperti membangun log atau sesuatu mungkin hilang.

Bastian Springer
sumber