web-dev-qa-db-fra.com

Obtention d’Android.content.res.Resources $ NotFoundException: exception même si la ressource est présente dans android

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

Je crée une application dont l'une des activités est d'être 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 je lance mon application, l'erreur suivante s'affiche

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 coché l'enregistrement R.Java et il a la ressource avec l'ID 7f03002b que l'exception recherche et qu'elle est présente dans le ...

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

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

77
Nik
  1. dans Eclipse, sélectionnez Projet> Nettoyer ...
  2. sélectionnez votre projet, puis appuyez sur OK
  3. relancer l'application

si cela se produit, supprimez le fichier r.Java. il va générer automatiquement.

36
prakash

Pour ma condition, la cause prenait int paramètre pour TextView. Me laisser montrer un exemple

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

obtient les informations d'erreur ci-dessus.

Ceci peut être corrigé en convertissant int en String comme ceci

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

Lorsque vous écrivez int, il attend une ressource et non le texte que vous écrivez. Soyez donc prudent lorsque vous définissez un int comme un String dans Android.

202
Yekmer Simsek

Puisque vous définissez explicitement la mise en page, vous pouvez essayer de la placer dans le dossier par défaut/layout et non dans le/layout-land, car si vous voulez Android gérer automatiquement la rotation pour vous .

11
mbwasi

Essayez de déplacer votre mise en page XML du dossier res/layout-land Vers le dossier res/layout.

8
Ashish Kumar

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

Android {
    ...
    buildToolsVersion "19.0.1"
    ...

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

2
Tash Pemhiwa

Vérifiez que vos importations sont correctes. J'ai eu un problème similaire où R pointait vers le fichier Android système R, pas mon fichier local.

2
Ray Benjamin

J'ai rencontré la même chose aujourd'hui. Dans mon cas, je lisais une valeur entière de ma base de données Firebase et la transmettais à setText () d'un TextView sans la convertir en entier. Alors utilisez simplement:

textview.setText(intvalue + "");

ou

textView.setText(String.valueOf(intValue));
2
Danish Ajaib

Cela peut être dû à une langue différente du téléphone pour laquelle votre code n'a pas l'actif. Par exemple, votre préférence.xml est placée dans xml-en et vous essayez d'exécuter votre application sur un téléphone dont le français est sélectionné. L'application se bloquera.

2
Arslan Mehboob

J'ai eu cette erreur d'une autre raison encore:

J'avais le fichier res/xml/data.xml Et j'essayais de le charger avec la classe Resources comme ceci:

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

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

La manière correcte est la suivante (de l'intérieur de l'activité):

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

Cela peut également causer des problèmes: accidentellement, une de mes mises en page était parquée dans le dossier de ressources de la tablette. Cette erreur s’est produite uniquement 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 bon dossier standard et reconstruit le projet suivant.

1
wolwe

même il a accepté la réponse mais j'ai une réponse différente. cela se produira surtout lorsque vous affectez du texte à afficher. par exemple .

currectText.setText(progress);

mais si le paramètre n'est pas une chaîne, il vous donnera

Android.content.res.Resources$NotFoundException: String resource ID 

alors faites paramètre en tant que chaîne. c'est simple, il suffit d'utiliser l'opérateur '+'

currectText.setText(""+progress);

je passe int dans la méthode setText juste convertie en problème de chaîne résoudre

2ème option si c'est Integer

currectText.setText(String.valueOf(progress));
1
android_jain

J'ai supprimé des dossiers build à l'intérieur d'un projet. Après nettoyé et reconstruit dans Android Studio. Puis corrigé des erreurs dans build.gradle et AndroidManifest.

0
CoolMind

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

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

de l'activité 1 j'avais

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.
}

Eclipse: Projet> Nettoyer

a travaillé pour moi. Je reçois souvent cela lorsque je copie des mises en page d'autres applications dans une nouvelle application.

Ennuyeux.

0
Hubert

L'orientation de l'écran est définie sur paysage dans votre fichier XML. Si vous avez utilisé Eclipse pour générer ce fichier, celui-ci aurait été créé dans le répertoire res/layout-land/folder.Mais lorsque vous ouvrez une activité en mode Portrait, le xml est recherché dans res/layout-port/folder . Si vous n'aviez pas XML pour le mode portrait, votre application se bloquerait.

0
Prakash

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 insérée par Eclipse a été dirigée vers le fichier System R plutôt que vers celui du projet. Il a fallu beaucoup de gratter la tête. J'espère que cela t'aides.

0
Rben