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!"
Je viens de copier le code et cela fonctionne bien ... donc vous devrez peut-être vérifier un autre endroit, voici mes suggestions.
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.
Essayez File -> Invalidate Caches / Restart...
, le problème a été résolu pour moi.
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.
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));
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