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
DDDoriginal
2024-12-20 12:56:14995parcourir

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";

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;
  }
}

Il peut être utilisé comme suit :

int resId = getResId("icon", R.drawable.class);
String resString = "icon";

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!

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