読者です 読者をやめる 読者になる 読者になる

MogLog

メモというか日記というか備忘録というか

【Android】可変の文字列リソースを定義する

Android4.2にて。
可変の文字列リソースを定義する方法は以下。
1.文字列リソースファイル(strings.xmlなど)に記述する各要素の値に、出力フォーマット指定子を含める
2.文字列を呼び出すときにgetString()メソッドを用い、第一引数に文字列リソース、第二引数以降にバインドする値を書く(getString()はContextクラスのメソッドであるので、Contextから呼び出すか、Contextを継承したクラスから呼びださなくてはならない。)


【例1】
文字列リソースファイル(strings.xmlなど)

<string name="reflection_count">振り返り回数 : %1$s</string>

呼び出し先Javaファイル

getString(R.string.reflection_count, 10);

上記例の場合、getString()の第二引数に10と指定しているためビューには「振り返り回数:10」と出力される。

%1$sの1$はgetString()の第二引数以降の引数番号。%sは文字列を表す。数値をバインドしたいときは「%d」となる。また、複数の引数をバインドしたいときは、2$、3$と増やすだけで良い。


【例2】

<string name="subject_score">%1$s:%2$d</string>
<string name="math">数学</string>
getString(R.string.subject_score, R.string.math, 5);

→「数学:5」と出力される


※参考
http://y-anz-m.blogspot.jp/2011/03/android-xml.html
http://developer.android.com/reference/java/util/Formatter.html