<< Android-Note
string-arrayからid取得
リソース内で文字列配列を定義するときはstring-arrayを使います。
例えば次のようなコードです。
<string name="mouse">Mouse</string> <string name="cow">Cow</string> <string name="tiger">Tiger</string> <string-array name="animals"> <item>@string/mouse</item> <item>@string/cow</item> <item>@string/tiger</item> </string-array>
この例では配列IDとしてanimalsという名前をつけました。この配列IDからコード中で文字列IDを取得するには次の簡単なコードで書けます。
TypedArray itemArray = getResources().obtainTypedArray(R.array.animals);
TypedArrayのあるインデックスの文字列IDを取得する場合はgetResourceIdメソッドを使います。
int mouseId = itemArray.getResourceId(0, -1);
この場合、0番目のIDなのでR.string.mouseが返ってきます。
注意点
string-arrayから文字列IDを取得する場合、注意しなければならないことがあります。
それは次のようにあるstringIDを別のstringIDで参照しているときです。
<string name="mouse">Mouse</string> <string name="cow">Cow</string> <string name="tiger">Tiger</string> <string name="mouse_ref">@string/mouse</string> <string-array name="animals"> <item>@string/mouse_ref</item> <item>@string/cow</item> <item>@string/tiger</item> </string-array>
もしanimalsで0番目の文字列IDを取得した場合、.string.mouse_refではなく、R.string.mouseつまり参照元の文字列IDが返ってきます。
このことが分からないとエラーが発生しないのに期待したIDが返ってこないで悩むことになります。
以上、string-arrayから各文字列のIDを取得するにはでした。では、また!
関連項目
© Kaz