Если я получаю имя изображения как переменную, например:
var imageName = SERVICE.getImg();
Затем, как я могу получить ресурс с помощью R.drawable.????
, я попробовал R.drawable[imageName]
, но это не удалось. Любые предложения?
Если я получаю имя изображения как переменную, например:
var imageName = SERVICE.getImg();
Затем, как я могу получить ресурс с помощью R.drawable.????
, я попробовал R.drawable[imageName]
, но это не удалось. Любые предложения?
int id = getResources().getIdentifier(imageName, type, package);
Это даст вам идентификатор ресурса, который вы ищете. С его помощью вы можете получить доступ к ресурсу из класса R.
Используя только параметр name
:
Вы также можете включить все 3 информации в параметр "имя", используя следующий формат: "package:type/image_name"
, что-то вроде:
int id = getResources().getIdentifier("com.my.app:drawable/my_image", null, null);
Это полезно, когда вы работаете с внешними компонентами или библиотеками, которые вы не можете или не хотите изменять, как вызывается getIdentifier()
. например: AOSP Launcher3
Попробуйте следующее:
int id = getResources().getIdentifier(imageName, "drawable", getPackageName());
Вам нужно отражение.
Предположим, что у вас есть R.drawable.image1, если вы хотите получить к нему доступ через строковое имя "image1", следующее должно работать:
String Name = "image1";
int id = R.drawable.class.getField(Name).getInt(null);
Но заметьте, что он получает только идентификатор изображения, вам все равно нужен надувной элемент, чтобы получить от него реальную выгоду.
Используйте эту функцию
public static String getResourceString(String name, Context context) {
int nameResourceID = context.getResources().getIdentifier(name,
"string", context.getApplicationInfo().packageName);
if (nameResourceID == 0) {
throw new IllegalArgumentException(
"No resource string found with name " + name);
} else {
return context.getString(nameResourceID);
}
}
Вы можете использовать метод getIdentifier, который даст вам идентификатор ресурса по его имени. Проверьте этот поток для более подробной информации.