IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

getResources().getIdentifier() utilisation non encouragée.


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut getResources().getIdentifier() utilisation non encouragée.
    Bonjour,

    J'ai le code suivant qui me sert à afficher une image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public void afficherImage(String path)
    	{
    		ImageView iv = (ImageView) this.findViewById(this.getResources().getIdentifier("image", "id", this.getPackageName()));
    		int ident = getResources().getIdentifier(path, "drawable", getPackageName());
    		iv.setImageResource(ident);
    	}
    Seulement, dans Eclipse, si je laisse le curseur sur le getIdentifier(), un texte apparait avec notamment ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Note: use of this function is discouraged. It is much more efficient to retrieve resources by identifier than by name.
    ->L'utilisation de cette fonction n'est pas encouragée et il serait préférable d'aller chercher l'image en utilisant son nom.

    Ce qui me chiffone, c'est que justement on utilise le nom de l'image puisque c'est un des paramètres de cette méthode ....



    Donc comment utiliser seulement le nom pour aller chercher une image sans passer par XML bien sur ?
    OS : LinuxMint 20

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    Ba la façon "normale" c'est comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ImageView iv = (ImageView) findViewById(R.id.image);
       	            		    iv.setBackground(R.drawable.monimage);
    Je vois pas trop pourquoi tu fais de cette façon la, à part si t'as besoin de récupérer le nom de ton id ou de ton image dynamiquement sinon ...

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Bonjour et merci pour votre réponse !

    Il est bien clair que je me suis bien embêté pour récupérer la View .... Merci.

    Par contre, lorsque vous écrivez "iv.setBackground(R.drawable.monimage);" est-ce que monimage est une String ?
    Je demande cela car j'ai besoin d'afficher une image dont le nom est passé en paramètre String. je peux passer seulement le nom de l'image ou alors le nom et le type (c'est à dire le . jpg ou . jpeg etc ...)

    Merci beaucoup !
    OS : LinuxMint 20

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    non la ça fait référence directement a une drawable qui s’appelle "monimage.jpg"
    et j'ai vu ton autre post, apparemment t'as besoin d'un nom dynamique donc la oui c'est la bonne méthode.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Bonjour,

    Je viens d'essayer ceci aussi mais sans succès ! pour essayer ça, j'ai saisi le nom de fichier avec et sans le type pour le remplissage du hashMap.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public void afficherImage(String chemin)
    	{
    //		ImageView iv = (ImageView) this.findViewById(this.getResources().getIdentifier("image", "id", this.getPackageName()));
    		ImageView iv = (ImageView) this.findViewById(R.id.image);
    		int ident = getResources().getIdentifier(chemin, "drawable", getPackageName());
    		Drawable d = Drawable.createFromPath(chemin);
    //		iv.setImageResource(ident);
    		iv.setImageDrawable(d);
    	}
    OS : LinuxMint 20

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    Si tu la lance dans le oncreate ta fonction t'as pas besoin de this devant findview normalement

    et utilise simplement iv.setBackgroundResource(ident);
    t'as pas besoin de Drawable d =....

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Bonjour,

    Je lance cette méthode depuis le controleur. Mais cette méthode se situe dans le MainActivty.

    Merci,
    OS : LinuxMint 20

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6]Utilisation non autorisée de Null
    Par Goupo dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 02/06/2007, 19h52
  2. Crontab, utilisation non interactive
    Par neptune dans le forum Administration système
    Réponses: 1
    Dernier message: 26/04/2007, 15h34
  3. clé sécurité pour éviter utilisation non voulue
    Par cbleas dans le forum Sécurité
    Réponses: 11
    Dernier message: 07/03/2007, 15h06
  4. Erreur en utilisation non-initialiser motif
    Par moniphal dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2005, 14h03
  5. Réponses: 1
    Dernier message: 28/04/2004, 20h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo