45 votes

Comment accéder à la ressource avec un nom dynamique dans mon cas ?

Si j'obtiens le nom de l'image en tant que variable comme suit :

 var imageName = SERVICE.getImg();

Ensuite, comment puis-je obtenir la ressource avec R.drawable.???? , j'ai essayé R.drawable[imageName] , mais cela a échoué. Aucune suggestion?

41voto

Dark Magic Points 79

Essaye ça:

 int id = getResources().getIdentifier(imageName, "drawable", getPackageName());

15voto

xandy Points 13480

Vous avez besoin de réflexion.

Supposons que vous ayez R.drawable.image1, si vous voulez y accéder via le nom de chaîne "image1", ce qui suit devrait fonctionner :

 String Name = "image1";
int id = R.drawable.class.getField(Name).getInt(null);

Mais remarquez qu'il n'obtient que l'ID de l'image, vous avez toujours besoin du gonfleur pour en tirer le véritable dessin.

3voto

clydealmighty Points 41

Utiliser cette fonction

 public static String getResourceString(String name, Context context) {
    int nameResourceID = context.getResources().getIdentifier(name,
            "string", context.getApplicationInfo().packageName);
    if (nameResourceID == 0) {
        throw new IllegalArgumentException(
                "No resource string found with name " + name);
    } else {
        return context.getString(nameResourceID);
    }
}

0voto

Mojo Risin Points 5471

Vous pouvez utiliser la méthode getIdentifier qui vous donnera l'identifiant de la ressource par son nom. Consultez ce fil pour plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X