2013-07-07
【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