Как получить возможность рисования из строки?

У меня есть строка со значением доступного для рисования местоположения в классе R, например:

String myString = "R.drawable.ic_web_server"

и я хочу присвоить его значение int.

Я пробовал Integer.parseString(myString), но он возвращает null int. Какие-либо предложения?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
3 978
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

вы можете сделать это так

String value= String.valueOf(R.drawable.ic_web_server);

так что у вас будет идентификатор ресурса, а затем вы можете использовать как

imageView.setImageResource(Integer.parseInt(value));

нет необходимости преобразовывать в строку. Мы можем сделать это напрямую целым числом

int value= R.drawable.ic_web_server;
imageView.setImageResource(value);
R.drawable.ic_web_server — целочисленный идентификатор. Почему он должен быть преобразован в строку, а затем обратно в целое число?
forpas 12.06.2019 14:20

мы можем сделать это напрямую целым числом, но я думал, что он хочет использовать строку

Abdul 12.06.2019 14:22

OP имеет строку и хочет целочисленный идентификатор.

forpas 12.06.2019 14:23

В OP нет есть R.drawable.ic_web_server, но есть строка: String myString = "R.drawable.ic_web_server";. Прочитайте вопрос еще раз.

forpas 12.06.2019 14:32

поэтому OP получит строку, а затем должен будет найти этот ресурс

Abdul 12.06.2019 14:47

И ваш код ничего не делает для получения этого ресурса.

forpas 12.06.2019 14:51

Пытаться

Integer.parseInt(myString);     

где вы используете parseString. Также вы можете попробовать вместо этого valueOf.

Это приведет к сбою приложения, потому что myString = "R.drawable.ic_web_server".

forpas 12.06.2019 14:27

Используйте этот код ниже:

int i = R.drawable.ic_web_server;

Вместо:

String myString = "R.drawable.ic_web_server"

ИЛИ

String myString = String.valueOf(R.drawable.ic_web_server);

OP имеет: String myString = "R.drawable.ic_web_server"; и проблема состоит в том, чтобы получить идентификатор drawable по его идентификатору строки. Прочитайте вопрос еще раз.

forpas 12.06.2019 14:28

вы не можете получить рисуемое изображение в виде строки потому что он возвращает int используйте непосредственно для установки изображения из drawable в изображении

 imageview.setImageDrawable(getResources().getDrawable(R.drawable.logo));

В OP нет есть R.drawable.ic_web_server, но есть строка: String myString = "R.drawable.ic_web_server";. Прочитайте вопрос еще раз.

forpas 12.06.2019 14:32
Ответ принят как подходящий

Сначала избавьтесь от префикса "R.drawable.":

String s = myString.replace("R.drawable.", "");

а затем получить целочисленный идентификатор drawable с помощью getIdentifier():

int id = context.getResources().getIdentifier(s, "drawable", context.getPackageName());

context является действительным Context, который вы должны указать, или, если ваш код находится внутри действия, вы можете его опустить:

int id = getResources().getIdentifier(s, "drawable", getPackageName());

Другие вопросы по теме