Android, getting resource ID from string? Android, getting resource ID from string? android android

Android, getting resource ID from string?


@EboMike: I didn't know that Resources.getIdentifier() existed.

In my projects I used the following code to do that:

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;    } }

It would be used like this for getting the value of R.drawable.icon resource integer value

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

I just found a blog post saying that Resources.getIdentifier() is slower than using reflection like I did. Check it out.


You can use this function to get resource ID.

public static int getResourceId(String pVariableName, String pResourcename, String pPackageName) {    try {        return getResources().getIdentifier(pVariableName, pResourcename, pPackageName);    } catch (Exception e) {        e.printStackTrace();        return -1;    } }

So if you want to get for drawable call function like this

getResourceId("myIcon", "drawable", getPackageName());

and for string you can call it like this

getResourceId("myAppName", "string", getPackageName());

Read this


This is based on @Macarse answer.

Use this to get the resources Id in a more faster and code friendly way.

public static int getId(String resourceName, Class<?> c) {    try {        Field idField = c.getDeclaredField(resourceName);        return idField.getInt(idField);    } catch (Exception e) {        throw new RuntimeException("No resource ID found for: "                + resourceName + " / " + c, e);    }}

Example:

getId("icon", R.drawable.class);