web-dev-qa-db-fra.com

Comment remplacer R.drawable. "SomeString"

J'ai des images dans mon projet. Le nom de l'image est stocké dans une chaîne et j'aimerais définir setImageResource (R.drawable. "....."); avec la chaîne du nom de l'image, mais le problème est que cela ne fonctionne pas.

Comment puis-je faire ceci?

24
Miloš

ce n'est pas une bonne syntaxe, et vous devez obtenir une erreur de temps du compilateur, avant de modifier une ressource image, vous devez savoir que, toutes les ressources fournies avec un identifiant, ces identifiants sont stockés dans un fichier R.Java. Les identifiants sont stockés au format entier et, dans votre application, vous pouvez récupérer toutes ces ressources par ces identifiants, et non par leur nom. Vous devez donc extraire l'identifiant de la ressource en premier lieu:

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

et ensuite utiliser ce resID.

51
jeet

Utilisation

getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName())
10
Vyacheslav Shylkin

Voir ce fil . Cela devrait vous aider. Fondamentalement, vous devez obtenir l'identifiant, puis le charger à l'aide de setImageResource.

2
Boris Strandjev

public int getIdentifier (nom de chaîne, chaîne defType, chaîne defPackage);

nom - nom de l'image
defType - ce sera dessinable pour votre cas
defPackage - Paquet par défaut de votre application (je pense que vous pouvez utiliser getPackage () pour l'activité pour cela)

1
colegu

Je l'ai fait fonctionner en déplaçant l'image du dossier 'drawable' vers le dossier 'raw' et accéder à la valeur de chaîne comme ci-dessous. Si vous n'avez pas le dossier 'raw' dans le répertoire 'res', faites un clic droit sur res- > nouveau-> répertoire des ressources Android et, dans la liste déroulante des types de ressources, sélectionnez "brut".

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

essaye ça

   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
Adonias