Sie gefunden vielleicht schon, dass dieser Fehler passiert, wenn wir eine ganze Zahl als String wie zu setzen versuchen: irgendwo im Code some_variable
erklärt wurde als int
und dann versucht, es zu some_textview
mit setText()
Verfahren einzustellen:
int some_variable = 0;
TextView some_textview = (TextView) findViewById(R.id.someTextView);
... some code/calculations etc...
some_textview.setText(some_variable); // exception! some_variable is an int value
es könnte auch ein Ergebnis, das durch ein beliebiges Verfahren sein, die zurück int als Ergebnis zurückgibt, wie:
some_textview.setText(someString.length());// exception! String.length() returns an int value
some_textview.setText(someSet.size());// exception! Set.size() returns an int value
usw.
diese Ursachen die Resources$NotFoundException
cuz gibt es keine String
Ressource mit einer solchen Nummer (id). R.java
hat statische Variablen, wobei jede String
ihre eigene eindeutige Nummer hat (ID, und Sie verwenden sie im Code als R.string. ID). Es könnte wahrscheinlich passieren, dass some_variable
eine gültige Nummer hat, aber in diesem Fall wird dem Benutzer eine falsche Textzeichenfolge in some_textview
angezeigt.
Die Lösung für dieses Problem ist einfach (wenn some_variable
‚s-Wert angezeigt werden muß):
some_textview.setText(String.valueOf(some_variable));
Es gibt auch eine Reihe von Menschen, die den int
Wert auf die gleiche Weise an die Toast
Nachricht zu setzen versuchen, wie:
int some_variable = 0;
... some code/calculations etc...
Toast.makeText(this, some_variable, Toast.LENGTH_LONG).show();
Toast.makeText(getBaseContext(), someSet.size(), Toast.LENGTH_LONG).show();
das Update ist das gleiche:
int some_variable = 0;
... some code/calculations etc...
Toast.makeText(this, String.valueOf(some_variable), Toast.LENGTH_LONG).show();
Toast.makeText(getBaseContext(), String.valueOf(some_Set.size()), Toast.LENGTH_LONG).show();
Sie vielleicht Met Fixes, die Integer(some_variable).toString()
Ansatz verwendet. Es ist nicht schlecht. Dies bedeutet jedoch, dass nur ganzzahlige Werte verwendet werden können (oder NumberFormatException
werden geworfen) als für String.valueOf(some_variable)
es ist egal, denn es funktioniert für jede Art von Wert, einschließlich aller Grundelemente (float, double, byte, long usw.) und wird nie Irgendeine Ausnahme werfen.
Aber es gibt einige andere Fälle. The rare cases are described here und der Punkt ist das Projekt in Eclipse zu reinigen.
Falls Sie ziemlich sicher sind, dass Sie keine Zahlen an die Methode übergeben, die String
akzeptiert, und dies geschieht mit einer App, die freigegeben wird (und nicht während der Entwicklung passiert), könnte es ein Fall sein, wenn Ihre App Locale
hat hing String
Ressourcen ab. Und wenn du es getestet hast, hast du es wahrscheinlich mit deinen regionspezifischen Locale
Geräten gemacht, so dass keine Probleme entdeckt wurden. In diesem Fall sollten Sie jedoch den Standardordner strings.xml
im Ordner res\values
eines Projekts angeben. Wenn Sie es verpassen, ist dies wahrscheinlich der Fall.Wenn einige Benutzer, können sagen, von einem Deutschland, wer Standard Locale
ist DE versucht, solche App zu laufen (die nur strings.xml
in Ordnern hat wie values-en
, values-it
usw., aber es gibt keine strings.xml
in values
noch in values-de
Ordner) einen Absturz mit Resources$NotFoundException
fangen .
Die Lösung für dieses Problem ist, wie ich bereits erwähnt habe, eine Standard strings.xml
in res\values
Ordner eines Projekts oder um sicherzustellen, dass Ihre Anwendung (in Application-Exteted-Klasse zum Beispiel) eine richtige Standardgebietsschema für Ihre App setzt läuft auf einem Gerät mit nicht unterstütztem Gebietsschema, wie:
Locale locale = getAppLocale(context);
String localeLang = locale.getLanguage();
// default locale is EN but available are EN and RU
if (!localeLang.equalsIgnoreCase("en") && !localeLang.equalsIgnoreCase("ru"))
locale = new Locale("en");
Configuration config = new Configuration();
config.locale = locale;
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
Perfekt! meiner war der Sprachordner! – Prachi