如果我知道它的名字,我如何获得图像的资源ID?

如果我知道它的名字(在Android中),如何获取图像的资源ID?

有了这样的事情:

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复制这个源代码。 基于本页面所做的testing,它比getIdentifier()快5倍。 我也发现它更方便,易于使用。 希望它可以帮助你。

链接: 在Android中dynamic检索资源

你可以使用这个函数来获取一个资源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()); 

对于string资源ID,您可以像这样调用它:

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

等等…

小心 :如果无法find资源ID,则会引发RuntimeException。 一定要在生产中恢复正常。

读这个

公共系统资源的示例:

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

警报

另一种方法是引用android.R.drawable类的文档。

我遇到的另一种情况。

String imageName =“Hello”,然后当它传递给getIdentifier函数作为第一个参数时,它将通过名称与stringnull终止,并将始终返回零。 传这个imageName.substring(0,imageName.length() – 1)