#android
#Android
Вопрос:
Я пытаюсь сделать изображения динамическими в своем приложении для Android. С помощью других сообщений я написал этот код, но я не могу установить ресурс изображения. Вот мой код.
// get image whose source i want to change..
ImageView IV = (ImageView) findViewById(R.id.imageView1);
// x for 1,2,3.. hangman1.png,hangman2.png and so on image are located
// under res/drawable-mdpi
int j = getResources().getIdentifier("hangman" x, "imageView", getPackageName());
// here i get errork, The method setImageResource(int) in the type ImageView
// is not applicable for the arguments (Drawable)
IV.setImageResource( getResources().getDrawable(j) );
Ответ №1:
int j = getResources().getIdentifier("hangman" x, "drawable", getPackageName());
попробуйте это, если вы пытаетесь получить чертеж. а также, как сказал kcoppock, просто используйте j.
Комментарии:
1. Да, вам нужно указать тип ресурса. Как и в
R.drawable.hangman1
: типdrawable
неimageView
является .
Ответ №2:
Потому что вы пытаетесь передать в Drawable. getDrawable(), как указано в его названии, возвращает объект, который можно нарисовать. setImageResource принимает идентификатор ресурса, который возвращает getIdentifier. Вы должны просто перейти j
к setImageResource()
.
Редактировать: Хех, и вы также должны использовать ответ Яшванта, как он сказал. 🙂
(КОМАНДНАЯ РАБОТА!)
Комментарии:
1. я уже пробовал IV.setImageResource( j); ошибка исчезает, но изображение не меняется .. 🙁
Ответ №3:
объединение обоих вышеуказанных решений помогло мне .. вот код .. dnt знает, какой ответ я должен принять..
ImageView IV = (ImageView) findViewById(R.id.imageView1);
int j = getResources().getIdentifier("hangman" x, "drawable", getPackageName());
IV.setImageResource( j );
Комментарии:
1. Он также опередил меня на 16 секунд.
2. 1 в течение 16 секунд ..lol… хорошо, я приму его ответ .. спасибо 🙂
Ответ №4:
в вашем XML-файле используйте app:src вместо android:background, а в файле activity используйте :
setImageDrawable(getRessource().getDrawable(R.drawable.yourRessource));