Я работаю с проектом Android, в котором я отправляю имя изображения из действия в другое действие, изображение уже находится в папке с возможностью рисования, я пробовал использовать этот код, показанный ниже, но он не работает.
Он работает, когда код
imageView.setImageResource(R.drawable.someimage);
но я хочу отобразить картинку среди некоторых изображений, которые будут выбраны из другого действия, поэтому мне нужно что-то вроде ниже
imageView.setImageResource(R.drawable.getIntent().getStringExtra("icon"));
Как это исправить?




Сначала вы должны получить идентификатор ресурса.
Context context = imageView.getContext();
int id = context.getResources().getIdentifier(resourceName, "drawable",
context.getPackageName());
imageView.setImageResource(id);
Думаю, в вашем случае resourceName будет:
String resourceName = getIntent().getStringExtra("icon")
@muminers По идее, у вас могут быть icon_1, icon_2 ... и так далее. На основе некоторой бизнес-логики вы показываете разные значки. И приложение создает логику, которая генерирует соответствующее имя ресурса.
Да, поэтому вы можете передать ресурс - R.drawable.icon_1 или R.drawabe.icon_2 - что именно то, что вам нужно. Вы предлагаете передать «icon_1», «icon_2», которые являются просто названиями тех ресурсов, что заставляет вас делать это волшебное и небезопасное заклинание. Это просто бессмысленно
Это зависит от логики, если у вас есть 100 иконок, вы бы хотели написать вручную if (vale == 1) {return R.drawable.icon_1} ... и это 100 раз?
Вы можете просто поместить Int в свой Intent Bundle, ссылаясь на запрошенный ресурс изображения:
intent.putExtra("icon", R.drawable.icon)
а затем просто используйте его:
int imageResource = intent.getIntExtra("icon")
imageView.setImageResource(imageResource);
Это намного проще
Я помещаю данные из массива, поэтому нет, я не могу добавить дополнительные данные, как вы говорите. Мой дополнительный код ввода: intent.putExtra ("type", typeArray [position]);
Вот решение
Context context = imageView.getContext();
int id = context.getResources().getIdentifier(getIntent().getStringExtra("icon"), "drawable",
context.getPackageName());
imageView.setImageResource(id);
Передача String здесь является шаблоном. Гораздо проще и эффективнее передать ссылку Int на идентификатор ресурса.
Довольно странное решение. Какой смысл здесь передавать String?