Установить ImageResource не работает

Я работаю с проектом Android, в котором я отправляю имя изображения из действия в другое действие, изображение уже находится в папке с возможностью рисования, я пробовал использовать этот код, показанный ниже, но он не работает.

Он работает, когда код

imageView.setImageResource(R.drawable.someimage);

но я хочу отобразить картинку среди некоторых изображений, которые будут выбраны из другого действия, поэтому мне нужно что-то вроде ниже

imageView.setImageResource(R.drawable.getIntent().getStringExtra("icon"));

Как это исправить?

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

Ответы 3

Ответ принят как подходящий

Сначала вы должны получить идентификатор ресурса.

Context context = imageView.getContext();
int id = context.getResources().getIdentifier(resourceName, "drawable",
context.getPackageName());
imageView.setImageResource(id);

Думаю, в вашем случае resourceName будет:

String resourceName = getIntent().getStringExtra("icon")

Довольно странное решение. Какой смысл здесь передавать String?

muminers 22.03.2018 22:24

@muminers По идее, у вас могут быть icon_1, icon_2 ... и так далее. На основе некоторой бизнес-логики вы показываете разные значки. И приложение создает логику, которая генерирует соответствующее имя ресурса.

DimDim 22.03.2018 22:31

Да, поэтому вы можете передать ресурс - R.drawable.icon_1 или R.drawabe.icon_2 - что именно то, что вам нужно. Вы предлагаете передать «icon_1», «icon_2», которые являются просто названиями тех ресурсов, что заставляет вас делать это волшебное и небезопасное заклинание. Это просто бессмысленно

muminers 22.03.2018 22:34

Это зависит от логики, если у вас есть 100 иконок, вы бы хотели написать вручную if (vale == 1) {return R.drawable.icon_1} ... и это 100 раз?

DimDim 22.03.2018 22:46

Вы можете просто поместить Int в свой Intent Bundle, ссылаясь на запрошенный ресурс изображения:

intent.putExtra("icon", R.drawable.icon)

а затем просто используйте его:

int imageResource = intent.getIntExtra("icon")
imageView.setImageResource(imageResource);

Это намного проще

Я помещаю данные из массива, поэтому нет, я не могу добавить дополнительные данные, как вы говорите. Мой дополнительный код ввода: intent.putExtra ("type", typeArray [position]);

SANJOY DASGUPTA 22.03.2018 22:41

Вот решение

 Context context = imageView.getContext();
    int id = context.getResources().getIdentifier(getIntent().getStringExtra("icon"), "drawable",
            context.getPackageName());
    imageView.setImageResource(id);

Передача String здесь является шаблоном. Гораздо проще и эффективнее передать ссылку Int на идентификатор ресурса.

muminers 22.03.2018 22:26

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