Maison > Java > javaDidacticiel > Comment récupérer efficacement les ID de ressources Android et les références de chaîne à partir d'une chaîne ?

Comment récupérer efficacement les ID de ressources Android et les références de chaîne à partir d'une chaîne ?

DDD
Libérer: 2024-12-20 12:56:14
original
1045 Les gens l'ont consulté

How to Efficiently Retrieve Android Resource IDs and String References from a String?

Obtention de l'ID de ressource et de la référence de chaîne à partir d'une chaîne

De nombreux scénarios de développement Android nécessitent de transmettre à la fois l'ID de ressource et la chaîne correspondante aux méthodes. Par exemple, vous pouvez rencontrer une référence telle que R.drawable.icon et exiger à la fois son identifiant entier et la chaîne "icon".

Solution 1 : Utiliser Resources.getIdentifier()

Android Studio fournit une méthode efficace connue sous le nom de Resources.getIdentifier(). Cette fonction prend la chaîne, le nom du package et le type de ressource comme paramètres et renvoie l'ID de ressource correspondant. Le nom du package peut être obtenu en utilisant getPackageName(). Pour l'exemple en question, le code serait :

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

Solution 2 : Utilisation de Reflection

Avant l'introduction de Resources.getIdentifier() par Android Studio, la réflexion était couramment utilisé pour réaliser cette fonctionnalité. Le code suivant illustre cette approche :

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

Il peut être utilisé comme suit :

int resId = getResId("icon", R.drawable.class);
String resString = "icon";
Copier après la connexion

Considérations sur les performances

Selon certaines sources , Resources.getIdentifier() fonctionne plus rapidement que l'approche basée sur la réflexion. Cependant, il est important de noter que la méthode de réflexion peut échouer dans certains scénarios de build Android, en particulier lorsque la réduction du code et des ressources est activée.

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