Maison > Java > javaDidacticiel > Comment obtenir efficacement un ID de ressource Android à partir de son nom de chaîne ?

Comment obtenir efficacement un ID de ressource Android à partir de son nom de chaîne ?

DDD
Libérer: 2024-12-20 09:31:09
original
563 Les gens l'ont consulté

How to Efficiently Get an Android Resource ID from its String Name?

Obtention de l'ID de ressource à partir d'une chaîne dans Android

Lorsque vous transmettez un ID de ressource à une méthode, il est souvent souhaitable d'accéder à la fois à l'ID et à la chaîne correspondante. Par exemple, considérons la ressource « icône » :

R.drawable.icon
Copier après la connexion

Pour obtenir à la fois l'ID et la chaîne « icône », plusieurs approches peuvent être explorées :

Une solution consiste à utiliser les ressources. Méthode getIdentifier() :

int resID = getResources().getIdentifier("icon", "drawable", getPackageName());
String iconString = "icon";
Copier après la connexion

Cependant, des recherches récentes ont indiqué que Resources.getIdentifier() peut être moins efficace que d'utiliser réflexion.

Vous pouvez également utiliser le code basé sur la réflexion suivant :

public static int getResId(String resName, Class<?> c) {

    try {
        Field idField = c.getDeclaredField(resName);
        return idField.getInt(idField);
    } catch (Exception e) {
        e.printStackTrace();
        return -1;
    } 
}
Copier après la connexion

Pour utiliser cette méthode pour la ressource « icône » :

int resID = getResId("icon", R.drawable.class); // or other resource class
String iconString = "icon";
Copier après la connexion

Bien que cette approche de réflexion peut être plus efficace, il est important de noter les inconvénients potentiels. Dans une version avec la réduction du code/des ressources activée, cette solution peut échouer. De plus, cela peut ne pas fonctionner dans les cas où le nom de la chaîne diffère du format de nom de ressource attendu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal