wake-up-neo.com

Formatzeichenfolge XXX ist keine gültige Formatzeichenfolge und sollte nicht an String.format übergeben werden

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!"

15

Ich habe gerade den Code kopiert, und er funktioniert gut.

  1. sauberes Projekt
  2. mehrsprachige Dateien prüfen
  3. oder verwenden Sie einfach String.format, wie es auch andere sagen
21
ohdroid

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

7
ByteArtisan

Versuchen Sie File -> Invalidate Caches / Restart..., das Problem wurde für mich behoben.

1
Bernd Kampl

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.

1
Venu G.

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));
0
Julian

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

0
Shadow Droid

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.

0
Shivam Maindola