toma_50 Posté(e) 20 janvier 2013 Share Posté(e) 20 janvier 2013 Salut à tous, Je bloque depuis plusieurs heure sur un problème. Quand je récupère les items de mon spinner ( ils sont dans mon fichier xml avec comme nom "spinner_matiere"), je fais ceci : List_matiere = getResources().getStringArray(R.array.spinner_matiere); Seulement maintenant, je voudrais faire la même chose mais en remplaçant "spinner_matiere" par une variable de type String. ex : List_matiere = getResources().getStringArray(R.array.variable); Comment faire ? merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 21 janvier 2013 Share Posté(e) 21 janvier 2013 Ce n'est pas possible (de manière simple). En Java, tu ne peux pas remplacer un identifiant (d'attribut, de variable, de méthode, ...) par le contenu d'une variable. Ce serait possible de le faire, mais c'est plus complexe à mettre en oeuvre, en utilisant l'introspection. Mais est-ce que ça en vaut le coup ? La question étant : qu'est-ce que tu cherches à faire ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
toma_50 Posté(e) 21 janvier 2013 Auteur Share Posté(e) 21 janvier 2013 Merci pour la réponse. En faite, j'ai une variable de type String qui prend le nom d'une de mes ressources et je voudrais que suivant ce nom,je puisse récupérer ce que contient cette ressource, pour mettre cela dans un tableau de String. En espérant avoir était le plus clair possible ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 22 janvier 2013 Share Posté(e) 22 janvier 2013 Je comprends ce que tu veux faire, pas pourquoi tu veux le faire. N'as tu pas un autre moyen de récupérer ton choix ? Néanmoins, si c'est ce que tu veux, tu peux donc utiliser l'introspection pour le faire. Exemple d'un code qui récupère une valeur d'identifiant d'un composant graphique à partir de son nom. A adapter à ton cas (R.string au lieu de R.id), et faire une gestion des erreurs un peu plus sérieuse) String maVariable = "textView1"; int id = 0; Class<?> cl = R.id.class; try { Field f = cl.getField(maVariable); Object value = f.get(null); id = ((Integer)value).intValue(); } catch (NoSuchFieldException e) { // attribut non trouvé e.printStackTrace(); } catch (IllegalArgumentException e) { // Erreur récupération de la valeur e.printStackTrace(); } catch (IllegalAccessException e) { // Erreur récupération de la valeur e.printStackTrace(); } TextView tv = (TextView)findViewById(id); tv.setText("hello"); Lien vers le commentaire Partager sur d’autres sites More sharing options...
toma_50 Posté(e) 23 janvier 2013 Auteur Share Posté(e) 23 janvier 2013 Merci mais j'ai fini par trouver par un autre moyen. Voila ce que j'ai utilisé : int ressource = getResources().getIdentifier( variable , "array", "com.example.iut" ); String liste_matiere[] = getResources().getStringArray(ressource); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.