Androidは、多言語化を前提としてフレームワークが組まれています。で、文字列のファイルは、言語毎にres/values/strings.xmlに入ってます。このstrings.xmlで定義した文字列を取得する方法は、Activity内であれば
で、呼び出せます(Activity外で使いたい場合は、その外のクラスにactivityのContextを渡してやって、context.getString()で呼び出せます。)。intの部分は、strings.xmlで指定したnameの値を、R.string.STRING_NAMEで指定してやります。たとえば、strings.xmlで下記の一文を指定したばあい
多分、getStringとgetTextに違いはそんなに無いんんじゃないのかと思うんですけど、あえて、違いをあげるならば、
getStringでは、 文字列の置き換えができます。たとえば、笑顔を評価するゲームアプリを作ってて、「あなたの評価は、10点でした」と表示させたい場合、10の部分は、それぞれの笑顔によって左右されると思います。で、そんな場合は、strings.xmlで
まんまなんですけど、%1$sの部分が置き換えられる文字列です。getString()で呼び出すときに、引数に置き換えたい文字列を入れます。
%1$sは、第一引数の文字列を指定してます。複数個の文字列を置き換えたい場合は、%2$sみたいに、%1の部分を%2にすればいいのかと。きっと引数は、何個でも大丈夫です。
たとえば、こんな感じでstrings.xmlを指定して
引数にそれぞれの文字列を指定してやります
すると、きっと、「はやとさんのニヒルな笑みは、10点でした」って文字列が取得されるはず。
未検証(書いた→Androidの文字のスタイルにHTMLのタグを利用する)。
getString(int)もしくは、
getText(int)
で、呼び出せます(Activity外で使いたい場合は、その外のクラスにactivityのContextを渡してやって、context.getString()で呼び出せます。)。intの部分は、strings.xmlで指定したnameの値を、R.string.STRING_NAMEで指定してやります。たとえば、strings.xmlで下記の一文を指定したばあい
<string name="unko">Big Unko</string>
getText(R.string.unko);で、Big Unkoが呼び出されます。
多分、getStringとgetTextに違いはそんなに無いんんじゃないのかと思うんですけど、あえて、違いをあげるならば、
getString()のいいところ
getStringでは、 文字列の置き換えができます。たとえば、笑顔を評価するゲームアプリを作ってて、「あなたの評価は、10点でした」と表示させたい場合、10の部分は、それぞれの笑顔によって左右されると思います。で、そんな場合は、strings.xmlで
<string name="score">あなたの笑顔は、%1$s点でした</string>
まんまなんですけど、%1$sの部分が置き換えられる文字列です。getString()で呼び出すときに、引数に置き換えたい文字列を入れます。
getString(R.string.score, "10");
%1$sは、第一引数の文字列を指定してます。複数個の文字列を置き換えたい場合は、%2$sみたいに、%1の部分を%2にすればいいのかと。きっと引数は、何個でも大丈夫です。
たとえば、こんな感じでstrings.xmlを指定して
<string name="score2">%2$sさんの%3$sは、%1$s点でした</string>
引数にそれぞれの文字列を指定してやります
getString(R.string.score2, "10", "はやと", "ニヒルな笑み");
すると、きっと、「はやとさんのニヒルな笑みは、10点でした」って文字列が取得されるはず。
