Я хочу получить доступ к ресурсу типа String или Drawable по его имени, а не по его int id.
Какой метод я бы использовал для этого?
Это будет примерно так:
R.drawable.resourcename
Убедитесь, что пространство имен Android.R
не импортировано как это может сбить с толку Eclipse (если это то, что вы используете).
Если это не сработает, вы всегда можете использовать метод контекста getResources
...
Drawable resImg = this.context.getResources().getDrawable(R.drawable.resource);
Где this.context
инициализируется как Activity
], Служба
или любой другой подкласс Контекст
.
Обновление:
Если это желаемое имя, класс Resources
(возвращаемый getResources ()
) имеет метод getResourceName (int)
. и getResourceTypeName (int)
?
Обновление 2 :
Класс Resources
имеет следующий метод:
public int getIdentifier (String name, String defType, String defPackage)
, который возвращает целое число указанного ресурса имя, тип и упаковка.
Если я правильно понял, это именно то, что вам нужно
int drawableResourceId = this.getResources().getIdentifier("nameOfDrawable", "drawable", this.getPackageName());
Где «это» - это Activity, написанное для пояснения.
Если вам нужна строка в strings.xml или идентификатор элемента пользовательского интерфейса, замените «drawable»
int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());
Предупреждаю, этот способ получения идентификаторов очень медленный, используйте только там, где это необходимо.
Ссылка на официальную документацию: Resources.getIdentifier (String name, String defType, String defPackage)