Maison >Java >javaDidacticiel >Comment récupérer un identifiant de ressource Android et sa chaîne correspondante ?
Vous devez transmettre un ID de ressource à une méthode, mais vous souhaitez également accéder au ressource de chaîne correspondante. Par exemple, vous avez R.drawable.icon et vous voulez à la fois l'ID entier et la chaîne "icon".
Utilisation de Resources.getIdentifier()
Une solution consiste à utiliser la méthode getIdentifier() dans la classe Resources. Cette méthode prend le nom de la ressource chaîne et le type de ressource (par exemple, dessinable) comme arguments et renvoie l'ID entier associé.
// Get the integer ID for the icon int id = resources.getIdentifier("icon", "drawable", getPackageName()); // Retrieve the string resource String stringResource = resources.getString(id);
Utilisation de Reflection
Une autre option consiste à utiliser la réflexion pour accéder directement au champ ID de ressource. Notez que cette solution peut ne pas fonctionner dans les versions avec la réduction du code/des ressources activée.
// Get the R.drawable class Class<?> clazz = R.drawable.class; // Get the field for the icon resource Field idField = clazz.getDeclaredField("icon"); // Get the integer ID int id = idField.getInt(null); // Retrieve the string resource String stringResource = resources.getString(id);
Combiner les deux approches
Pour une flexibilité maximale, vous pouvez combiner les deux approches . Transmettez le nom de la ressource chaîne à la méthode et utilisez la technique préférée (réflexion ou getIdentifier()) dans la méthode pour récupérer l'ID et la chaîne.
// Method that accepts the string resource name public void processResource(String resourceName) { // Get the R.drawable class Class<?> clazz = R.drawable.class; try { // Try using reflection to get the ID Field idField = clazz.getDeclaredField(resourceName); int id = idField.getInt(null); // Retrieve the string resource String stringResource = resources.getString(id); } catch (Exception e) { // Fallback to using getIdentifier() int id = resources.getIdentifier(resourceName, "drawable", getPackageName()); String stringResource = resources.getString(id); } // Use the ID and string as needed in your method ... }
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!