1
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

リフレクションを使って文字列からリソースIDを取得する

一般的に、変数や文字列からリソースIDを取得したい場合、以下のように書くと思います。

int viewId = getResources().getIdentifier("text_view", "id", getPackageName());
TextView textView = (TextView)findViewById(viewId);

参考ページ

Rクラスの内部クラスidのフィールドがリソースIDなので、リフレクションを使って以下のように書くこともできます。

try {
    Field field = R.id.class.getField("text_view");
    TextView textView = (TextView)findViewById(field.getInt(null));
} catch (NoSuchFieldException e) {
    e.getStackTrace();
} catch (IllegalAccessException e) {
    e.getStackTrace();
}

使いどころは皆無ですね。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?