Je veux accéder à une ressource comme une chaîne ou un dessinable par son nom et non par son identifiant int.
Quelle méthode utiliserais-je pour cela?
java
android
android-resources
Assouan
la source
la source
Réponses:
Ce sera quelque chose comme:
R.drawable.resourcename
Assurez-vous que l'
Android.R
espace de noms n'est pas importé car il peut confondre Eclipse (si c'est ce que vous utilisez).Si cela ne fonctionne pas, vous pouvez toujours utiliser la
getResources
méthode d' un contexte ...Où
this.context
est initialisé comme uneActivity
,Service
ou toute autreContext
sous-classe.Mettre à jour:
Si c'est le nom que vous voulez, la
Resources
classe (retournée pargetResources()
) a unegetResourceName(int)
méthode, et ungetResourceTypeName(int)
?Mise à jour 2 :
La
Resources
classe a cette méthode:Qui renvoie l'entier du nom, du type et du package de ressource spécifiés
la source
R.drawable.resourcename
est l'entier.Si j'ai bien compris, c'est ce que tu veux
Où «ceci» est une activité, écrite juste pour clarifier.
Si vous voulez une chaîne dans strings.xml ou un identifiant d'un élément d'interface utilisateur, remplacez "dessiné"
Je vous préviens, cette façon d'obtenir des identifiants est vraiment lente, à n'utiliser qu'en cas de besoin.
Lien vers la documentation officielle: Resources.getIdentifier (String name, String defType, String defPackage)
la source
la source
•
Kotlin Version
viaExtension Function
Pour trouver un identifiant de ressource par son nom Dans Kotlin, ajoutez ci-dessous l'extrait de code dans un fichier kotlin:
ExtensionFunctions.kt
•
Usage
Désormais, tous les identifiants de ressources sont accessibles partout où vous avez une référence de contexte à l'aide de la
resIdByName
méthode:la source
Un moyen simple d'obtenir l'ID de ressource à partir d'une chaîne. Ici, resourceName est le nom de la ressource ImageView dans le dossier dessinable qui est également inclus dans le fichier XML.
la source
Je vous suggère d'utiliser ma méthode pour obtenir un ID de ressource. C'est beaucoup plus efficace que d'utiliser la méthode getIdentidier (), qui est lente.
Voici le code:
la source
la source
J'ai trouvé cette classe très utile pour gérer les ressources. Il a des méthodes définies pour traiter les dimensions, les couleurs, les dessinables et les chaînes, comme celle-ci:
la source
en plus de la solution @lonkly
méthode:
la source
Dans Kotlin, ce qui suit fonctionne très bien pour moi:
Si la ressource est placée dans le dossier mipmap, vous pouvez utiliser le paramètre "mipmap" au lieu de "drawable".
la source