135

(Android で) 名前がわかっている場合、画像のリソース ID を取得するにはどうすればよいですか?

4

5 に答える 5

271

このようなもので:

String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
于 2010-06-15T09:46:40.173 に答える
30

これを試すこともできます:

try {
    Class res = R.drawable.class;
    Field field = res.getField("drawableName");
    int drawableId = field.getInt(null);
}
catch (Exception e) {
    Log.e("MyTag", "Failure to get drawable id.", e);
}

このソースコードは以下の URL からコピーしました。このページで行われたテストに基づくと、getIdentifier() よりも 5 倍高速です。また、より便利で使いやすいと感じました。それがあなたにも役立つことを願っています。

リンク: Android でリソースを動的に取得する

于 2011-12-26T17:16:39.090 に答える
11

パブリック システム リソースの例:

// this will get id for android.R.drawable.ic_dialog_alert
int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android");

アラート

別の方法は、 android.R.drawableクラスのドキュメントを参照することです。

于 2014-05-31T06:47:04.547 に答える
10

この関数を使用して、リソース ID を取得できます。

public static int getResourseId(Context context, String pVariableName, String pResourcename, String pPackageName) throws RuntimeException {
    try {
        return context.getResources().getIdentifier(pVariableName, pResourcename, pPackageName);
    } catch (Exception e) {
        throw new RuntimeException("Error getting Resource ID.", e)
    } 
}


したがって、 Drawable Resource IDを取得したい場合は、次のようにメソッドを呼び出すことができます。

getResourseId(MyActivity.this, "myIcon", "drawable", getPackageName());

(またはフラグメントから):

getResourseId(getActivity(), "myIcon", "drawable", getActivity().getPackageName());


文字列リソース IDの場合、次のように呼び出すことができます。

getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName());

等...


注意: リソース ID が見つからない場合は、RuntimeException がスローされます。必ず本番環境で適切にリカバリしてください。

これを読む

于 2013-09-30T11:49:21.607 に答える