Maison >Java >javaDidacticiel >Comment récupérer efficacement les ID de ressources et les valeurs de chaîne dans Android ?

Comment récupérer efficacement les ID de ressources et les valeurs de chaîne dans Android ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-19 03:38:09764parcourir

How to Efficiently Retrieve Resource IDs and String Values in Android?

Récupération de l'ID de ressource et de la chaîne dans Android

Dans le développement Android, obtenir à la fois l'ID de ressource et la valeur de chaîne associée à une ressource peut être une exigence commune. Prenons l'exemple suivant :

R.drawable.icon

Cette référence désigne une ressource dessinable nommée « icône ». Pour transmettre à la fois son ID et sa représentation sous forme de chaîne à une méthode, vous disposez de plusieurs options.

Utiliser Resources.getIdentifier()

La méthode Resources.getIdentifier() vous permet pour obtenir l'ID de ressource pour une chaîne donnée. Passez la chaîne, le type de ressource souhaité (par exemple, dessinable) et le nom du package comme paramètres.

int resId = getResources().getIdentifier("icon", "drawable", getPackageName());

Cela récupérera l'ID de "l'icône" dessinable. Cependant, vous devez toujours récupérer manuellement la valeur de la chaîne à l'aide de getString().

Utilisation de Java Reflection

Une autre approche consiste à utiliser la réflexion Java pour obtenir l'ID de ressource et valeur de chaîne directement. Cependant, cette méthode peut échouer dans certains scénarios, par exemple lorsque la réduction du code/des ressources est activée ou lorsque le nom de la ressource ne correspond pas au nom du champ (par exemple, pour les ressources de chaîne).

try {
    Field idField = R.drawable.class.getDeclaredField("icon");
    int resId = idField.getInt(null);
    String resString = getResources().getString(resId);
} catch (NoSuchFieldException | IllegalAccessException e) {
    e.printStackTrace();
}

Approche hybride

Une approche hybride peut offrir le meilleur des deux mondes. Transmettez la valeur de chaîne à la méthode et faites-la utiliser en interne getIdentifier() pour obtenir l'ID de ressource. Cela garantit que la méthode ne reçoit que la chaîne, tout en autorisant l'accès à la fois à l'ID et à la valeur de la chaîne.

Exemple :

private void processResource(String resourceName) {
    int resId = getResources().getIdentifier(resourceName, "drawable", getPackageName());
    if (resId != 0) {
        // Do something with the resource ID and string value...
    }
}

En choisissant le plus solution appropriée à votre cas d'utilisation, vous pouvez récupérer et utiliser efficacement à la fois l'ID de ressource et la valeur de chaîne dans le développement Android.

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!

Déclaration:
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