Подтвердить что ты не робот

Как заменить R.drawable. SomeString "

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

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

4b9b3361

Ответ 1

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

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

а затем используйте этот идентификатор.

Ответ 2

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

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

Ответ 3

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

Ответ 4

public int getIdentifier (имя строки, строка defType, строка defPackage);

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

Ответ 5

попробуйте это

   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);

Ответ 6

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

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