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
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";
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; } }
Pour utiliser cette méthode pour la ressource « icône » :
int resID = getResId("icon", R.drawable.class); // or other resource class String iconString = "icon";
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!