Androidアプリとリソースにこの文字列があります:
<string name="create_group_select_people">Select up to %1$d people!</string>
これはフラグメントから呼び出されます:
Integer countMax = 5; //also tried just "int" - nothing changed
getResources().getString(R.string.create_group_select_people, countMax);
しかし、エラーが発生しました:
Format string 'create_group_select_people' is not a valid format string so it should not be passed to String.format
何が間違っているのか理解できませんか?アプリを起動すると、文字通り「%1 $ d人まで選択してください!」と表示されます。
コードをコピーしただけで、うまく機能します。あなたは他の場所をチェックする必要があるかもしれません、ここに私の提案があります。
リソースでフォーマットされたパラメーターをtrueに設定します。
<string name="some_text" formatted="true">
Use for String.format method. Parameter one: %s1
</string>
そして、この方法を使用します:
String.format(context.getString(R.string.some_text,"value 1"))
またはこの方法:
context.getString(R.string.some_text,"value 1"))
注:書式付きフラグは、プレースホルダーを持つ文字列に対してのみtrueに設定する必要があります
File -> Invalidate Caches / Restart...
、それは私のために問題を修正しました。
「クリーンプロジェクト」を実行してから、Android Studio。
それは私のためにそれを修正しました、それはいくつかのマイナーなAndroid Studio/Lintのバグのように見えます。
おそらくStringクラスのformatメソッドがありません。TextViewで設定する場合、適切な方法は次のとおりです。
textView.setText(String.format(getResources().getString(R.string.create_group_select_people), countMax));
必要なのはString formatterです。以下のコードを変更してください
getResources().getString(R.string.create_group_select_people, countMax);
に
String temp = String.format(getResources().getString(R.string.create_group_select_people), countMax);
詳細情報については 参照
関数を作成し、その中にコードを入れて、この@SuppressLint("StringFormatInvalid")
を関数の直前に追加します。それが役に立てば幸い。