2017-02-02 16 views
0

を含む文字列このリンクの警告に関する他の記事を読んだことがありますが、私の問題は解決しなかったし、まだ間違っていることは得られません。デフォルトのファイルのstrings.xmlで無効な書式%

、私が持っている:

<string name="rating_dialog">You\'re about to rate this app with %s stars.</string> 

その後、私はオーバーライドのonClickメソッド内でそれを呼び出す:

v.getContext().getString(R.string.rating_dialog, String.valueOf(rating)) 

それは次のように表示されています:

You're about to rate this app with {String.valueOf(rating)} stars.

リンク警告:

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

vViewであり、ratingint値です。

他の言語のファイルstrings.xmlを確認しましたが、すべての翻訳は問題ないようです。

解決済み:%sの代わりにhindi string.xmlの%がありました。

+1

文字列リソースでは、%1 $ s(および他の変数には%2 $ sなど)を使用する必要があります。 – 0xDEADC0DE

+1

ここでは回答済みです:http://stackoverflow.com/questions/12627457/format-statement -in-a-string-resource-file –

答えて

1

XMLで定義する各プレースホルダに位置を割り当てる必要があります。

あなたの文字列は次のようになります。

<string name="rating_dialog">You\'re about to rate this app with %1$s stars.</string> 
+0

ありがとうございます、私はこれを適用し(翻訳をチェックして翻訳が影響を与えないようにする)、同じ問題を解決しました。 – whynottodayhum

0

あなたは以下のようにそれを行うことができます:あなたは、整数値を割り当てる場合

その後、「%1 $を使用します。string.xmlをで

d "、文字列の場合"%1 $ s "

は、位置を定義するために使用します。あなたが複数の値を使用したい場合、あなたは "%1 $ d" を使用することができ、 "%2 $ dの"、......など

<string name="rating_dialog">You\'re about to rate this app with %1$d stars.</string> 

次に、コードのようにそれを行う:

v.getContext().getString(R.string.rating_dialog, rating); 

あなたのお役に立てば幸いです。

+0

ありがとうございました。%1 $ dと%1 $ sのすべての手順を適用し、翻訳エディタで「翻訳不可」をチェックしました(翻訳は影響を与えません)が、同じ問題です。 – whynottodayhum

+0

String message = getString(R.string.rating_dialog、rating)のようにしてください。 ? – KishuDroid

+0

問題はhindi strings.xmlで、%sの代わりに%しかありませんでした。しかしもう一度ありがとう – whynottodayhum

関連する問題