Ich habe eine Android-App und diese Zeichenfolge in Ressourcen:
<string name="create_group_select_people">Select up to %1$d people!</string>
Dies wird aus Fragment aufgerufen:
Integer countMax = 5; //also tried just "int" - nothing changed
getResources().getString(R.string.create_group_select_people, countMax);
aber ich habe Fehler bekommen:
Format string 'create_group_select_people' is not a valid format string so it should not be passed to String.format
Ich kann nicht verstehen was falsch ist Wenn ich die App starte, wird mir wörtlich "Wählen Sie bis zu% 1 $ d Personen!"
Ich habe gerade den Code kopiert, und er funktioniert gut.
Setzen Sie den Parameter in Ressourcen auf "true":
<string name="some_text" formatted="true">
Use for String.format method. Parameter one: %s1
</string>
und benutze diesen Weg:
String.format(context.getString(R.string.some_text,"value 1"))
oder so:
context.getString(R.string.some_text,"value 1"))
Hinweis: Das formatierte Flag sollte nur für Zeichenfolgen mit Platzhaltern auf true gesetzt werden
Versuchen Sie File -> Invalidate Caches / Restart...
, das Problem wurde für mich behoben.
Versuchen Sie, ein "sauberes Projekt" durchzuführen, gefolgt von einem Schließen und erneuten Öffnen von Android Studio.
Das hat es für mich behoben, es sieht aus wie ein kleiner Android Studio/Lint Bug.
Vermutlich fehlt Ihnen die Formatierungsmethode der String-Klasse. Wenn Sie sie in einer TextView festlegen, lautet der richtige Weg
textView.setText(String.format(getResources().getString(R.string.create_group_select_people), countMax));
Sie benötigen String-Formatierer. Bitte ändern Sie den Code von unten
getResources().getString(R.string.create_group_select_people, countMax);
zu
String temp = String.format(getResources().getString(R.string.create_group_select_people), countMax);
Für mehr Detailinformationen siehe
Machen Sie eine Funktion und geben Sie Ihren Code ein und fügen Sie diese @SuppressLint("StringFormatInvalid")
direkt vor der Funktion ein. Ich hoffe es hilft.