Преобразовать строку, содержащую идентификатор, в целочисленный идентификатор - PullRequest
13 голосов
/ 07 ноября 2011

У меня короткий вопрос:

Как можно преобразовать строку, содержащую Id отрисовки, которая

String idString = "R.drawable.bubblegum";

, в целое число,

idInt

чтобы я мог использовать этот идентификатор для ссылки на изображение (которое используется в SimpleAdapter)

Итак, для примера я не могу этого сделать:

bubble.setImageDrawable(this.getResources().getDrawable(idString));
//not possible, cause idString is a String an not an Id/Int

Итак, у меня есть строка, содержащая идентификатор, но, к сожалению, как строка.

Спасибо!

Ответы [ 6 ]

21 голосов
/ 17 июля 2012

Хотя этот вопрос уже довольно старый, вам не хватает того, что «id» и «drawable» - это разные типы ресурсов.Таким образом, вместо

getResources().getIdentifier(stringId, "id", "my.Package");

это

getResources().getIdentifier(stringId, "drawable", "my.Package");

Вы также можете получить имя пакета с контекстом активности, например activityContext.getPackageName()

/**
 * Returns Identifier of String into it's ID as defined in R.java file.
 * @param pContext
 * @param pString defnied in Strings.xml resource name e.g: action_item_help
 * @return
 */
public static int getStringIdentifier(Context pContext, String pString){
    return pContext.getResources().getIdentifier(pString, "string", pContext.getPackageName());
}
3 голосов
/ 24 июля 2015

Вы можете попробовать следующее

int id = getResources().getIdentifier("arr_name"+positionSelected,
                        "array", rootview.getContext().getPackageName());

Я использую в раскрывающемся списке счетчик, получить строку массива после родительского счетчика может помочь вам!

1 голос
/ 07 ноября 2011

int idInt = R.drawable.bubblegum;

Если только мне чего-то не хватает здесь.

0 голосов
/ 21 декабря 2011

По крайней мере, я не смог найти решение этой проблемы.Кажется, что нет способа преобразовать строку «R.id.mytext» в целое число, подобное R.id.mytext, которое можно использовать в findViewById (R.id.myText).

0 голосов
/ 07 ноября 2011

если ваш idString постоянен, то есть он не изменяется во время выполнения, следуйте ответу DeeV. Если он изменится, вы можете взглянуть на метод getIdentifier .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...