如果我知道一个图像的名称,我如何得到它的资源 ID?

如果我知道一个图像的名字(在 Android 中) ,我如何得到它的资源 id?

107170 次浏览

像这样的东西:

String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());

你也可以试试这个:

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倍。我还发现它更方便,更容易使用。希望对你也有帮助。

链接: < a href = “ http://daniel-codes.blogspot.com/2009/12/Dynamic-撷取-Resources-in.html”> 在 Android 中动态检索资源

您可以使用此函数获取资源 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)
}
}


所以如果你想得到一个 可以画资源 ID,你可以这样调用这个方法:

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

(或来自一个片段) :

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


对于 绳子资源 ID,您可以这样称呼它:

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

等等。


小心 : 如果找不到资源 ID,它会抛出一个 RuntimeException。

看看这个

公共系统资源示例:

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

alert

另一种方法是参考 机器人,可以画类的文档。

我遇到的另一个情况是。

字符串 imageName = “ Hello” 然后当它被传递到 函数作为第一个参数时,它将传递具有字符串 null 终止的名称,并且总是返回零。 把这个递给我 Substring (0,imageName.length ()-1)