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!