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!