Android: android.contenu.res.Ressources$NotFoundException: String resource ID #0 x 5
- Je obtenir de l'exception, dans le titre, quand je lance mon application. Ce qu'il fait c'est qu'il a une .fichier txt avec des mots pour un Bourreau de jeu et je pense que l'exception est levée lors de l'accès au fichier. Mon fichier, cuvinte.txt est situé dans /actif/. Voici mon code (j'ai sauté la mise en page/xml partie, qui fonctionne très bien):
public void onCreate() {
//all the onCreate() stuff, then this:
try {
AssetManager am = this.getAssets();
InputStream is = am.open("cuvinte.txt");
InputStreamReader inputStreamReader = new InputStreamReader(is);
BufferedReader b = new BufferedReader(inputStreamReader);
String rand;
while((rand=b.readLine())!=null){
cuvinte.add(rand);
}
} catch (IOException e) {
Toast.makeText(this, "No words file", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
newGame(newG);
}
public void newGame(View view){
Random rand = new Random();
String stringCuvant = cuvinte.get(rand.nextInt(cuvinte.size()));
cuvant.setText("");
System.out.println(stringCuvant);
for(int i = 0; i< stringCuvant.length(); i++){
cuvant.append("_ ");
}
incercari.setText(valIncercari);
}
La fonction newGame() est appelée lorsque le bouton new game est pressé et au début de l'activité, dans la fonction onCreate ().
- publier vos logcat exception!
- vous devez fermer les lecteurs après vous avez terminé avec eux
- Par souci de professionnalisme, veuillez donner le nom de vos variables en anglais 🙂
- Dans mon cas, j'ai vécu cela parce que j'essayais de passer un int en paramètre à l'intérieur d'un
setText()
fonction.
Vous devez vous connecter pour publier un commentaire.
(Juste à l'assomption, moins d'infos d'Exception stacktrace)
Je pense que, cette ligne,
incercari.setText(valIncercari);
throws Exceptionparce que
valIncercari
estint
De sorte qu'il devrait être,
Ou
Integer.toString(valIncercari);
setText(int)
également utilisé pour obtenir la ressource de chaîne par id. Et Android tous les id de ressource aint
valeur.Voulais juste faire remarquer une autre raison de ce message d'erreur peut être levée si vous avez défini une chaîne de ressource pour une traduction de votre application, mais ne pas fournir une valeur par défaut de la chaîne de ressource.
Exemple de la Question:
Comme vous pouvez le voir ci-dessous, j'ai eu une ressource de chaîne pour un espagnol de la chaîne "get_started". Il peut encore être référencés dans le code, mais si le téléphone n'est pas en espagnol, il n'aura aucune ressource pour charger et de crash lors de l'appel de
getString()
.values-es/strings.xml
Référence à des ressources
Logcat:
Solution à la Question
La prévention c'est assez simple, assurez-vous juste que vous avez toujours une chaîne par défaut de ressources dans
values/strings.xml
de sorte que si le téléphone est dans une autre langue, il aura toujours une ressource à retomber.values/strings.xml
values-en/strings.xml
values-es/strings.xml
values-de/strings.xml
Un autre scénario qui peut provoquer cette exception est avec de la liaison de données
c'est lorsque vous utilisez quelque chose comme ceci à votre disposition
Remarquez que la variable que j'utilise est un Entier et je suis de l'affecter à la zone de texte de la TextView. Depuis le TextView a déjà une méthode avec la signature de
setText(int)
il va utiliser cette méthode au lieu d'utiliser lesetText(String)
et de la fonte de la valeur. Ainsi, le TextView pense de votre numéro d'entrée comme une ressource de valeur qui, évidemment, n'est pas valide.Solution est de jeter votre int valeur de chaîne comme celle-ci
Build
->Clean Project
dans Android Studio pour re-générer les classes de Liaison des Données.Ce problème se produit principalement en raison de l'erreur dans
setText()
méthodeSolution est simple à mettre votre
Integer
valeur par la conversion enstring
typecomme
Parfois, cela est dû à l'aiment pas n'importe quelle source, comme si je veux mettre un texte dans un textview de carte alors que je devrais utiliser
Si vous écrivez quelque chose comme
cela ne fonctionne pas et parfois, on ne trouve pas la ressource à partir de la string.xml fichier alors ce type d'erreur se produit.
À l'aide de la liaison de données et la définition d'arrière-plan à l'edittext avec des ressources provenant de la drawable dossier provoque l'exception.
Solution
Je viens de changer l'arrière-plan de
android:background="@drawable/rectangle"
àandroid:background="@null"
Nettoyer et Reconstruire le Projet.