Aller au contenu

[RESOLU] Mettre une variable dans un getStringArray()


toma_50

Recommended Posts

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

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

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

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...