android:text="@string/hello" /> String string = getString (R. string. hello); You can use either getString(int) or getText(int) to retrieve a string.
A string resource provides text strings for your application with optional text styling and formatting. There are three types of resources that can provide your application with strings: String. XML resource that provides a single string. String Array.
I'll use getResources(). getIdentifier(name, "id", getPackageName()); to get the ID of an ImageButton (as you would with R.id.name). @Srujan Barai, getResource() and getPackageName() are methods from Activity.
@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);
How to get an application resource id from the resource name is quite a common and well answered question.
How to get a native Android resource id from the resource name is less well answered. Here's my solution to get an Android drawable resource by resource name:
public static Drawable getAndroidDrawable(String pDrawableName){
int resourceId=Resources.getSystem().getIdentifier(pDrawableName, "drawable", "android");
if(resourceId==0){
return null;
} else {
return Resources.getSystem().getDrawable(resourceId);
}
}
The method can be modified to access other types of resources.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With