Obtenir android.content.res.Resources $ NotFoundException: exception même lorsque la ressource est présente dans Android


89

S'il vous plaît laissez-moi savoir où je me trompe pour obtenir l'erreur.

Je crée une application dont l'une de ses activités est d'être uniquement en mode paysage. J'ai donc ajouté ce qui suit dans le fichier AndroidManifest.xml

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

J'ai créé un dossier comme

/ res / layout-land

et ajoutez-y une mise en page appelée see_today_landscape_layout.

et dans onCreate()j'ai ajouté ce qui suit

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

Mais lorsque j'exécute mon application, j'obtiens l'erreur suivante

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

J'ai croisé R.java et il a la ressource avec l'ID 7f03002b que l'exception recherche et elle est présente là-dedans ...

J'ai nettoyé et reconstruit le projet 5 fois, mais le problème persiste.

Le point étrange est que cela fonctionnait hier et que cela ne fonctionne pas aujourd'hui. Le code est le même.


À quoi fait référence l'ID de ressource # 0x7f03002b? Vous devez fournir le contenu du see_today_landscape_layout.xmlfichier.
a.ch.

oui, il fait référence à see_today_landscape_layout.xml selon R.java
Nik

1
Copie possible de la ressource Android non trouvée?
rds

J'ai eu ce problème lors de la mise à niveau pour l'utiliser compile 'com.android.support:appcompat-v7:23.4.0'si je reste avec v7:22.2.0'cela fonctionne
Stephen

Réponses:


36
  1. dans eclipse, allez dans Projet> Nettoyer ...
  2. sélectionnez votre projet, puis appuyez sur OK
  3. relancez l'application

si cela se reproduit, supprimez le fichier r.java. il générera automatiquement.


2
comme je l'ai déjà mentionné ... j'ai effacé les dossiers bin et gen et reconstruit l'application .. ne fonctionne toujours pas ...
Nik

128
Si cela ne résout pas votre problème, pourquoi a-t-il été coché?
IcedDante

1
que faites-vous si cela se produit sur l'application de publication?
Dinesh le

220

Pour ma condition, la cause prenait un intparamètre pour TextView. Laissez-moi vous montrer un exemple

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

obtient les informations d'erreur ci-dessus.

Cela peut être résolu en convertissant inten Stringcomme ça

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

Lorsque vous écrivez int, il attend une ressource et non le texte que vous écrivez. Soyez donc prudent intlorsque vous définissez un en tant que Stringsous Android.


Merci, cela a fonctionné, j'essayais de faire comme ceci: num2.setText (lotteryCharacters.charAt (2));, puis je suis passé à num2.setText (String.valueOf (lotteryCharacters.charAt (2))); ... et ça a marché!
TharakaNirmana

1
Je me demande quelle est la différence entre valueOf (i) et "" + i?
peterb

Totalement inattendu, super prise! Merci
gunjot singh

1
Que diriez-vous du code XAML, comment puis-je définir la valeur. Mon cas est de définir une valeur décimale pour la propriété sur XAML
zquanghoangz

2
Merci, la raison en est que setText est une méthode surchargée qui accepte à la fois la chaîne et l'ID de ressource. Ensuite, vous passez un int, il recherche l'ID de la ressource
abedfar

12

Puisque vous définissez explicitement la mise en page, vous voudrez peut-être essayer de la placer dans le dossier default / layout pas dans / layout-land, car c'est si vous voulez qu'Android gère automatiquement la rotation pour vous.


1
Si le téléphone est en mode portrait, il sera en mode portrait, lorsque vous faites pivoter le téléphone, il sera en mode paysage. Essayez-vous de faire toujours du paysage? Ensuite, ce que vous devez faire est de définir l'orientation de l'activité sur paysage dans le fichier Manifest ou dans le code voir cette Question stackoverflow.com/questions/2150287/…
mbwasi

Je l'ai fait comme je l'ai mentionné dans ma question '<activity android: name = ". LandScapeImageActivity" android: screenOrientation = "landscape"> </activity>'
Nik

1
il vous manque la partie configchanges <activity android: screenOrientation = "landscape" android: configChanges = "orientation | keyboardHidden" android: name = "abcActivty" />
mbwasi

9

Essayez de déplacer votre mise en page XML à partir res/layout-landde res/layoutdossier


dans le dossier de mise en page?
Robert

1
from res / layout-land >> res / layout folder
Ashish Kumar


J'ai déplacé mon xml de res/layout-sw600dpà res/layoutpuis ça a fonctionné .. Merci pour vos ans ..
Shailendra Madda

2

Cela peut se produire en raison d'une langue différente du téléphone pour laquelle votre code ne contient pas l'actif. Par exemple, votre préférence.xml est placé dans xml-en et vous essayez d'exécuter votre application sur un téléphone qui a sélectionné le français, l'application se bloquera.


Créez toujours des dossiers d'actifs par défaut, puis ajoutez des dossiers spécifiques à la langue ou à l'orientation. Bien que cela puisse ou non être le cas ici :)
Ahmad Ali Nasir

2

J'ai eu cette erreur pour une autre raison:

J'avais le fichier res/xml/data.xmlet j'essayais de le charger avec une Resourcesclasse comme celle-ci:

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

Cependant, cela est incorrect car la méthode Resources.getSystem()renvoie un objet Ressources partagées global qui donne accès uniquement aux ressources système.

La manière correcte est la suivante (à partir de l'activité interne):

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

Comment accéder aux ressources des fonctions ou classes de niveau supérieur qui n'héritent pas d'Activité alors?
Vivek Yadav le

2

Dans mon cas, ma version Build Tools dans mon build.gradle pour le module d'application était obsolète sur un ancien projet. La mise à jour a résolu le problème:

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

Mis à jour avec la dernière version des outils de construction (25.0.1) et synchronisé le projet et tout allait bien à nouveau.


2

Vérifiez que vos importations sont correctes. J'ai eu un problème similaire qui Rpointait vers le Rfichier système Android , pas mon fichier local.


1

J'ai supprimé des dossiers builddans un projet. Après l'avoir nettoyé et reconstruit dans Android Studio. Ensuite, les erreurs corrigées dans build.gradle et AndroidManifest.


1

Cela peut également causer des problèmes: accidentellement, une de mes mises en page a été garée dans le dossier des ressources de ma tablette, je n'ai donc eu cette erreur qu'avec la mise en page du téléphone. La mise en page du téléphone n'avait tout simplement pas de fichier de mise en page approprié.

J'ai travaillé à nouveau après avoir déplacé le fichier de mise en page dans le dossier standard correct et une reconstruction de projet suivante.


Pourriez-vous fournir plus d'informations à ce sujet s'il vous plaît stackoverflow.com/help/how-to-answer
Rich Benner

0

Assurez-vous que le R que vous pointez est le bon. J'ai eu un problème très similaire à celui-ci, où une importation a été insérée par Eclipse qui pointait vers le fichier System R plutôt que vers celui du projet. Il a fallu beaucoup de grattage à la tête. J'espère que cela t'aides.


0

L'orientation de l'écran est définie sur paysage dans votre xml. Si vous avez utilisé eclipse pour générer ce fichier, il aurait été créé sous res / layout-land / folder.Mais lorsque vous ouvrez l'activité en mode Portrait, l'application recherchera xml dans res / layout-port / folder ou dans le dossier res / layout / . Si vous n'aviez pas xml pour le mode portrait, votre application plantera.


0

J'ai corrigé le de cette façon:

Créez un dossier dans le nom de votre répertoire de ressources "drawable-nodpi", puis déplacez les vôtres toutes les ressources de ce répertoire à partir d'autres répertoires pouvant être dessinés.

Nettoyez maintenant votre projet, puis reconstruisez-le. Exécutez à nouveau j'espère que cela fonctionnera cette fois sans aucune exception de ressource introuvable.


Cela m'a indiqué la bonne voie, mais gardez à l'esprit ce post: stackoverflow.com/questions/24682094/…
Adrian

0

J'ai eu cette erreur lorsque j'essayais d'accéder aux données du Bundle à partir de One Intent en utilisant getInt ("ID").

Je l'ai résolu en utilisant getString ("ID").

De Activity1 j'ai eu

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

Sur l'activité 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
Veuillez mettre à jour votre réponse pour expliquer comment cela résout le problème et améliore les réponses votées et acceptées que cette question vieille de 5 ans a déjà. Voir: Comment écrire une bonne réponse .
FluffyKitten

Veuillez envisager d'ajouter quelques détails et explications pour étayer votre réponse afin qu'elle soit utile aux autres
Souvik Ghosh

0

Pour moi, l'invalidation du cache et le redémarrage ne fonctionnaient pas. J'ai supprimé les dossiers .idea et .gradle. Si vous faites cela, n'oubliez pas que des choses comme les journaux de compilation ou quelque chose peuvent disparaître.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.