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」と出力される
※参考 https://y-anz-m.blogspot.com/2011/03/android-xml.html https://developer.android.com/reference/java/util/Formatter