Android.content.res.Resources $ NotFoundException alınıyor: kaynak android'de mevcut olsa bile istisna


90

Hatayı almak için nerede yanlış yaptığımı lütfen bana bildirin.

Bir faaliyetinin sadece yatay modda olması için bir uygulama oluşturuyorum. Bu yüzden AndroidManifest.xml dosyasına aşağıdakileri ekledim

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

Gibi bir klasör oluşturdum

/ res / layout-land

ve içine see_today_landscape_layout adlı bir düzen ekleyin.

ve onCreate()aşağıdakileri ekledim

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

Ancak uygulamamı çalıştırdığımda aşağıdaki hatayı alıyorum

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'da kontrol ettim ve istisnanın aradığı 7f03002b kimliğine sahip kaynak var ve orada var ...

Projeyi 5 kez temizledim ve yeniden inşa ettim, ancak yine de sorun devam ediyor.

Garip nokta, bunun dün çalışıyor olması ve bugün çalışmamasıdır. Kod aynı.


Kaynak Kimliği # 0x7f03002b neyi ifade eder? see_today_landscape_layout.xmlDosyanın içeriğini sağlamalısınız .
a.ch.

evet, R.java'ya göre see_today_landscape_layout.xml'ye atıfta bulunuyor
Nik


Kullanımına yükseltme zaman bu sorunu vardı compile 'com.android.support:appcompat-v7:23.4.0'ben kalırsam v7:22.2.0'bunun işleri
stephen

Yanıtlar:


36
  1. tutulmada, Proje> Temizle'ye gidin ...
  2. projenizi seçin ve ardından Tamam'a basın
  3. uygulamayı yeniden başlatın

tekrar olursa r.java dosyasını silin. otomatik olarak üretilecektir.


2
daha önce bahsettiğim gibi ... bin ve gen klasörlerini temizledim ve uygulamayı yeniden oluşturdum .. hala çalışmıyor ...
Nik

131
Bu, sorununuzu çözmediyse, neden onay işareti aldı?
IcedDante

1
bu sürüm uygulamasında olursa ne yaparsınız?
Dinesh

220

Durumum için neden intparametre alıyordu TextView. Bir örnek göstereyim

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

yukarıdaki hata bilgisini alır.

Bu dönüştürme ile tespit edilebilir intiçin Stringböyle

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

Siz yazarken int, yazdığınız metni değil, bir kaynağı bekler. Bu yüzden , Android'de bir intolarak ayarlamaya dikkat edin String.


Teşekkürler, işe yaradı, şöyle yapmaya çalışıyordum: num2.setText (lotteryCharacters.charAt (2));, sonra num2.setText (String.valueOf (lotteryCharacters.charAt (2))) olarak değiştirdim; ... ve işe yaradı!
TharakaNirmana

1
Acaba valueOf (i) ve "" + i arasındaki fark nedir?
peterb

Tamamen beklenmedik, Harika yakalama! Teşekkürler
gunjot singh

1
XAML koduna ne dersiniz, değeri nasıl ayarlayabilirim. Benim durumum, XAML üzerindeki mülk için ondalık değer ayarlamalı
zquanghoangz

2
Teşekkürler, bunun nedeni setText'in hem String hem de kaynak kimliğini kabul eden aşırı yüklenmiş bir yöntem olmasıdır. Ardından kaynak
kimliğini

13

Düzeni açıkça ayarladığınız için, Android'in sizin için otomatik olarak dönüşü işlemesini istiyorsanız, onu / layout-land değil varsayılan / layout klasörüne koymak isteyebilirsiniz.


1
Telefon dikey görünümde ise dikey, telefonu döndürdüğünüzde ise yatay görünümde olacaktır. Onu her zaman manzara yapmaya mı çalışıyorsun? Ardından yapmanız gereken, Manifest dosyasında veya kodda faaliyetin yönünü yatay olarak ayarlamaktır bu Soru stackoverflow.com/questions/2150287/…
mbwasi

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

1
yapılandırma bölümünü kaçırıyorsunuz <activity android: screenOrientation = "landscape" android: configChanges = "orientation | keyboardHidden" android: name = "abcActivty" />
mbwasi


2

Bu, kodunuzun varlığına sahip olmadığı telefondaki farklı bir dil nedeniyle olabilir. Örneğin, preference.xml dosyanız xml-en içine yerleştirilmiş ve uygulamanızı Fransızca seçilmiş bir telefonda çalıştırmaya çalışıyorsanız, uygulama çökecektir.


Her zaman varsayılan varlık klasörleri oluşturun ve ardından dile veya yönlendirmeye özgü olanları ekleyin. Yine de burada durum böyle olabilir ya da olmayabilir :)
Ahmad Ali Nasir

2

Bu hatayı başka bir nedenden aldım:

Dosyayı res/xml/data.xmlaldım ve şu Resourcessınıfla yüklemeye çalışıyordum :

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

Ancak, yöntem Resources.getSystem()yalnızca sistem kaynaklarına erişim sağlayan genel bir paylaşılan Kaynaklar nesnesi döndürdüğü için bu yanlıştır .

Doğru yol aşağıdaki gibidir (Faaliyetin içinden):

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

O halde Activity'den devralmayan üst düzey işlevlerden veya sınıflardan kaynaklara nasıl erişilir?
Vivek Yadav

2

Benim durumumda, uygulama modülü için build.gradle'daki Derleme Araçları sürümüm eski bir projede güncelliğini yitirmişti. Güncellemek sorunu çözdü:

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

En son derleme araçları sürümüne (25.0.1) güncellendi ve projeyi senkronize etti ve her şey yolundaydı.


2

İçe aktarımlarınızın doğru olduğundan emin olmak için kontrol edin. Yerel dosyama değil R, Android sistem Rdosyasına işaret ederken benzer bir sorun yaşadım .


1

buildBir proje içindeki klasörleri sildim . Temizledikten ve Android Studio'da yeniden oluşturduktan sonra. Daha sonra build.gradle ve AndroidManifest'teki hatalar düzeltildi.


1

Bu da bazı sorunlara neden olabilir: Yanlışlıkla düzenlerimden biri tablet kaynakları klasörüme park edildi, bu yüzden bu hatayı yalnızca telefon düzeninde aldım. Telefon düzeninde uygun bir düzen dosyası yoktu.

Pafta dosyasını doğru standart klasöre taşıdıktan ve müteakip bir proje yeniden oluşturduktan sonra tekrar çalıştım.


Bununla ilgili daha fazla bilgi verebilir misiniz lütfen stackoverflow.com/help/how-to-answer
Rich Benner

0

İşaret ettiğiniz R'nin doğru olduğundan emin olun. Buna çok benzer bir sorun yaşadım, burada Eclipse tarafından proje yerine System R dosyasına işaret eden bir içe aktarım eklendi. Çok fazla kafa kaşıdı. Bu yardımcı olur umarım.


0

Xml'nizde ekran yönü yatay olarak ayarlanmış. Bu dosyayı oluşturmak için eclipse kullandıysanız, res / layout-land / folder altında oluşturmuş olursunuz.Ancak, aktiviteyi Portre modunda açtığınızda, uygulama res / layout-port / folder veya normal res / layout / içinde xml'yi arayacaktır. . Dikey mod için xml'niz yoksa, uygulamanız çökecektir.


0

Bu şekilde düzelttim:

Kaynak dizin adınızda bir klasör oluşturun "drawable-nodpi"ve ardından bu dizindeki tüm kaynakları diğer çekilebilir dizinden taşıyın.

Şimdi projenizi temizleyin ve ardından yeniden inşa edin. Tekrar çalıştırın umarım bu sefer herhangi bir kaynak bulunmayan istisna olmadan çalışacaktır.


Bu beni doğru yola işaret etti ama lütfen
Adrian

0

GetInt ("ID") kullanarak One Intent'ten Bundle verilerine erişmeye çalışırken bu hatayı aldım.

GetString ("ID") kullanarak çözdüm.

Activity1'den aldım

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

B Faaliyetinde,

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
Bunun sorunu nasıl çözdüğünü ve bu 5 yıllık sorunun halihazırda sahip olduğu olumlu oylanan ve kabul edilen yanıtları iyileştirdiğini açıklamak için lütfen yanıtınızı güncelleyin. Bakınız: Nasıl iyi bir cevap yazabilirim ?
FluffyKitten

Lütfen yanıtınızı desteklemek için bazı ayrıntılar ve açıklamalar eklemeyi düşünün, böylece başkalarına yardımcı olabilir
Souvik Ghosh

0

Benim için önbellek geçersiz kılma ve yeniden başlatma işe yaramadı. .İdea ve .gradle klasörlerini kaldırdım. Bunu yaparsanız, günlük oluşturma gibi şeylerin veya bir şeyin yine de kaybolabileceğini unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.