2012-02-28 1 views
18

У меня есть несколько изображений в моем проекте. Имя изображения сохраняется в String, и я хотел бы setImageResource (R.drawable. "....."); с строкой имени изображения, но проблема в том, что это не работает.Как заменить R.drawable. SomeString

Как я могу это сделать?

+0

где находятся изображения? – Deva

+0

В чертеже моего проекта. –

+0

Не работает в android, вы должны хранить изображения в чертежах и получить к нему доступ R.drawable.image – Newts

ответ

42

Это не правильный синтаксис, и вы должны получить ошибку времени компилятора, прежде чем изменять ресурс изображения, вы должны знать, что все ресурсы, предоставленные id, эти идентификаторы хранятся в файле R.java. Идентификаторы хранятся в целочисленный формат, а в приложении вы можете получить все эти ресурсы этого идентификатора, а не по имени, поэтому вам нужно получить идентификатор ресурса в первом, по:

String mDrawableName = "myimg"; 
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 

, а затем использовать этот RESID ,

+0

Отлично, спасибо. –

10

Использование

getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName()) 
+0

Отлично, спасибо. –

2

Смотрите это thread. Это должно помочь вам. В основном вам нужно получить идентификатор, а затем загрузить с помощью setImageResource.

+0

Неизвестный downvoter, что я плохо сделал с моим ответом? –

+0

Отлично, спасибо. –

+0

Я уже дал вам положительный голос. –

1

public int getIdentifier (String name, String defType, String defPackage);

имени - имя изображения
defType - это будет вытяжка для Вашего случая
defPackage - пакет по умолчанию приложения (я думаю, что вы можете использовать getPackage() о деятельности для этого)

0

Ьги это

String uri = "NAME"; 

    // int imageResource = R.drawable.icon; 
    int imageResource = getResources().getIdentifier(uri, null, getPackageName()); 

    ImageView imageView = (ImageView) findViewById(R.id.myImageView); 
    Drawable image = getResources().getDrawable(imageResource); 
    imageView.setImageDrawable(image); 
0

Я получил его, переместив изображение из «drawable» в «raw» и получив доступ к строковому значению, как показано ниже. Если у вас нет папки «raw» в каталоге «res», щелкните правой кнопкой мыши по каталогу ресурсов res-> new-> Android и в раскрывающемся списке resourcetype выберите «raw».

String avatar = ("android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue)); 

 Смежные вопросы

  • Нет связанных вопросов^_^