toma_50 Posted January 20, 2013 Share Posted January 20, 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 Link to comment Share on other sites More sharing options...
chpil Posted January 21, 2013 Share Posted January 21, 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 ? Link to comment Share on other sites More sharing options...
toma_50 Posted January 21, 2013 Author Share Posted January 21, 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 ... Link to comment Share on other sites More sharing options...
chpil Posted January 22, 2013 Share Posted January 22, 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"); Link to comment Share on other sites More sharing options...
toma_50 Posted January 23, 2013 Author Share Posted January 23, 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); Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.