リソースをID名から取得するには

アプリ内に組み込まれたリソース(テキスト、画像、音楽など...)はR.javaでIDとして定義されています。

そのリソースにアクセスするのに例えば

R.drawable.icon

とすると、画像リソースからiconという画像にアクセスできます。

ただ、この方法はあらかじめアプリ内でIDの値が分かっていないと参照できません。

アプリ実行時にリソース名から直接リソースにアクセスできる方法がないか探してみるとResourcesクラスにその方法がありました。

それがgetIdentifierというメソッドでリソースを文字列から取得できます。

使い方はこうです。

getIdentifier("リソース名", "タイプ名", "パッケージ名");

R.drawable.iconならリソース名は"icon"、タイプ名は"drawable"になります。

例えばR.drawable.iconのIDを取得したいなら次のようにします。

int iconId = getResources().getIdentifier(
        "icon", "drawable", getPackageName());
    ///R.drawable.iconのID値を取得

もしリソースが見つかればR.drawable.iconのリソースID、もしリソース名が存在しなければ0が返ってきます。

この方法なら外部ファイルからでもリソースにアクセスできるのでとても便利です。

以上、リソース名からIDを取得する方法でした。では、また!

関連項目
プライバシーポリシー