Ich habe ursprünglich angerufen String.format
Hier entlang:
return String.format("%s %f %f", anotherString, doubleA, doubleB);
Was dazu führte, dass Android Lint diese Warnung generierte:
Die implizite Verwendung des Standardgebietsschemas ist eine häufige Fehlerquelle: Verwenden Sie stattdessen String.format(Locale, …).
Also habe ich es geändert, um es zu verwenden Locale.US
ausdrücklich, basierend auf dem, was ich gelesen habe http://developer.android.com/reference/java/util/Locale.html im Abschnitt „Achten Sie auf das Standardgebietsschema“:
return String.format(Locale.US, "%s %f %f", anotherString, doubleA, doubleB);
Warum generiert Android Lint immer noch dieselbe Warnung? Ich muss das Projekt in Eclipse bereinigen, um es loszuwerden, wenn die meisten Warnungen einfach verschwinden, sobald die fehlerhafte Zeile behoben ist. Ich bin mir nicht sicher, ob ich etwas falsch mache oder nicht.
Das Bereinigen und Wiederherstellen des Projekts sollte funktionieren.
BTW, möchten Sie vielleicht verwenden Locale.getDefault()
sich um Texte kümmern, die nicht in Englisch verfasst sind.
Als ich das Gebietsschema mit dem Format erwähnte, verschwand die Fusselwarnung einfach.
String.format(Locale.US,"%02d", selectedInt);
Implizites Standardgebietsschema bei Fallkonvertierung
Berufung String#toLowerCase()
oder #toUpperCase()
ohne Angabe eines expliziten Gebietsschemas ist eine häufige Fehlerquelle. Der Grund dafür ist, dass diese Methoden das aktuelle Gebietsschema auf dem Gerät des Benutzers verwenden und Auch wenn der Code beim Entwickeln der App korrekt zu funktionieren scheint, schlägt er in einigen Gebietsschemata fehl. Im türkischen Gebietsschema ist der Großbuchstabenersatz für i beispielsweise nicht I.
Wenn Sie möchten, dass die Methoden nur eine ASCII-Ersetzung durchführen, um beispielsweise einen Aufzählungsnamen zu konvertieren, rufen Sie auf String#toUpperCase(Locale.US)
stattdessen. Wenn Sie wirklich das aktuelle Gebietsschema verwenden möchten, rufen Sie an String#toUpperCase(Locale.getDefault())
stattdessen.
http://developer.android.com/reference/java/util/Locale.html#default_locale
Fügen Sie einfach Ihr Gebietsschema hinzu; für englisches Gebietsschema,
return String.format(Locale.ENGLISH,”%s %f %f”, anotherString, doubleA, doubleB);
12455200cookie-checkWarum warnt Android Lint vor String.format, das das Standardgebietsschema verwendet, wenn explizit Locale.US verwendet wird?yes
Fusselwarnung ist überhaupt kein Fehler. Es versucht nur, Sie über Leistung, Übersetzung und ähnliche Probleme zu informieren. Ich erhalte diese Warnung auch in Apps, die ich nur auf eine bestimmte Sprache ausrichten möchte, aber Sie können Lint jederzeit deaktivieren, indem Sie zu Fenster> Einstellungen> Android> Lint-Fehlerprüfung gehen. Ich glaube, dass es im schlimmsten Fall ein Gerät geben könnte, auf dem Locale.US überhaupt nicht verfügbar ist, und daher einige Probleme verursachen kann. Bisher bin ich aber noch nie mit solchen konfrontiert worden.
– Mailand
5. Juni 2013 um 3:05 Uhr