web-dev-qa-db-fra.com

La chaîne de format XXX n'est pas une chaîne de format valide, elle ne doit donc pas être transmise à String.format.

J'ai une application Android et cette chaîne dans les ressources:

<string name="create_group_select_people">Select up to %1$d people!</string>

Cela s'appelle fragment:

Integer countMax = 5; //also tried just "int" - nothing changed
getResources().getString(R.string.create_group_select_people, countMax);

mais j'ai eu une erreur:

Format string 'create_group_select_people' is not a valid format string so it should not be passed to String.format

Je ne peux pas comprendre ce qui ne va pas? Lorsque je lance une application, cela me montre littéralement "Sélectionnez jusqu'à% 1 $ d personnes!"

15

Je viens de copier le code et cela fonctionne bien ... donc vous devrez peut-être vérifier un autre endroit, voici mes suggestions.

  1. projet propre
  2. vérifier les fichiers multilingues
  3. ou juste utiliser String.format comme d'autres
21
ohdroid

Définissez le paramètre formaté sur true dans les ressources: 

<string name="some_text" formatted="true">
    Use for String.format method. Parameter one: %s1
</string>

et utiliser de cette façon:

String.format(context.getString(R.string.some_text,"value 1"))

ou de cette façon:

context.getString(R.string.some_text,"value 1"))

Remarque: l'indicateur formaté doit être défini sur true uniquement pour les chaînes avec des espaces réservés.

7
ByteArtisan

Essayez File -> Invalidate Caches / Restart..., le problème a été résolu pour moi.

1
Bernd Kampl

Essayez de faire un «projet propre» suivi d'une fermeture et d'une réouverture d'Android Studio.

Cela a réglé le problème pour moi, cela ressemble à un bogue mineur d'Android Studio/Lint.

1
Venu G.

Vous manquez probablement la méthode de formatage de la classe String. Si vous la définissez dans un TextView, voici comment:

textView.setText(String.format(getResources().getString(R.string.create_group_select_people), countMax));
0
Julian

Vous avez besoin de String formateur. Veuillez changer ci-dessous le code de

 getResources().getString(R.string.create_group_select_people, countMax);

à

String temp =  String.format(getResources().getString(R.string.create_group_select_people), countMax);

Pour plus d'informations détaillées reportez-vous

0
Shadow Droid