1. ホーム
  2. java

[解決済み] Android、文字列からリソースIDを取得?

2022-04-22 09:41:50

質問

私のクラスの1つのメソッドにリソースIDを渡す必要があります。それは参照が指すidの両方を使用する必要があり、また、文字列を必要とします。どのようにこれを達成するのが最善でしょうか?

例えば

R.drawable.icon

この整数のIDを取得する必要がありますが、文字列 "icon"へのアクセスも必要です。

メソッドに渡す必要があるのは、"icon" の文字列だけであれば、望ましいのですが。

どのように解決するのですか?

エボマイク: 知らなかった Resources.getIdentifier() が存在した。

私のプロジェクトでは、次のようなコードを使ってそれを行いました。

public static int getResId(String resName, Class<?> c) {

    try {
        Field idField = c.getDeclaredField(resName);
        return idField.getInt(idField);
    } catch (Exception e) {
        e.printStackTrace();
        return -1;
    } 
}

の値を取得するために、このような使い方をします。 R.drawable.icon リソース整数値

int resID = getResId("icon", R.drawable.class); // or other resource class

というブログ記事を見つけたので Resources.getIdentifier() は、私がやったようなリフレクションを使うよりも遅いです。 確認する .