如何获取图像的资源ID,如果我知道它的名字(在Android设备)?
Answer 1:
像这样的东西:
String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
Answer 2:
你也可以试试这个:
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);
}
我从以下网址复制本的源代码。 基于此页面做的测试,它比则getIdentifier快5倍()。 我还发现它更方便和易于使用。 希望它可以帮助你。
链接: 在Android中动态检索资源
Answer 3:
您可以使用此功能来获取资源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。 一定要在生产中正确恢复。
读这个
Answer 4:
例如,用于公共系统资源:
// this will get id for android.R.drawable.ic_dialog_alert
int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android");
另一种方式是指在文档android.R.drawable类。
Answer 5:
这是我遇到的另外一个场景。
字符串imageName =“你好”,然后当它传递到则getIdentifier功能第一个参数,它会通过用绳子空终止的名字,将永远返回零。 通过此imageName.substring(0,imageName.length() - 1)
文章来源: How do I get the resource id of an image if I know its name?