107 votes

Obtention de l'exception Android.content.res.Resources$NotFoundException : exception même si la ressource est présente dans Android

Veuillez m'indiquer où je me trompe pour obtenir cette erreur.

Je suis en train de créer une application dont l'une des activités ne doit se faire qu'en mode paysage. J'ai donc ajouté ce qui suit dans AndroidManifest.xml fichier

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

J'ai créé un dossier comme

/res/layout-land

et y ajouter une mise en page appelée see_today_landscape_layout.

et en 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 traversé l'enregistrement R.java et il contient la ressource avec l'ID 7f03002b que l'exception recherche et elle est présente là-dedans...

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

Ce qui est étrange, c'est que cela fonctionnait hier et ne fonctionne plus aujourd'hui. Le code est le même.

1voto

wolwe Points 11

Cela peut également poser des problèmes : Par accident, l'une de mes présentations a été placée dans le dossier des ressources de ma tablette, de sorte que je n'ai obtenu cette erreur qu'avec la présentation pour téléphone. La mise en page pour téléphone n'avait tout simplement pas de fichier de mise en page approprié.

J'ai fonctionné à nouveau après avoir déplacé le fichier de mise en page dans le bon dossier standard et après avoir reconstruit le projet.

0voto

Hubert Points 3461

Projet > Nettoyer

a fonctionné pour moi. Je rencontre souvent ce problème lorsque je copie des mises en page d'autres applications dans une nouvelle application.

Agaçant.

0voto

John Cataldo Points 141

Assurez-vous que le R vers lequel 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 au lieu de celui du projet. J'ai dû me creuser la tête à plusieurs reprises. J'espère que cela vous aidera.

0voto

nag prakash Points 145

L'orientation de l'écran est réglée sur paysage dans votre xml. Si vous aviez utilisé Eclipse pour générer ce fichier, il aurait été créé dans le dossier res/layout-land/. Mais lorsque vous ouvrez l'activité en mode portrait, l'application recherche le fichier xml dans le dossier res/layout-port/ ou dans le dossier normal res/layout/. Si vous n'avez pas de fichier xml pour le mode portrait, l'application plantera.

0voto

0xalihn Points 5358

J'ai corrigé le problème de cette manière :

Créez un dossier dans votre répertoire de ressources "drawable-nodpi" et déplacez ensuite toutes les ressources de ce répertoire à partir d'autres répertoires dessinables.

Maintenant, nettoyez votre projet et reconstruisez-le. Exécutez à nouveau le projet en espérant qu'il fonctionnera cette fois sans aucune exception de ressource non trouvée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X