Récupérer en Java une chaine déclarée dans un XML

Résolu/Fermé
MGD Software Messages postés 186 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 23 avril 2022 - 15 févr. 2020 à 12:03
MGD Software Messages postés 186 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 23 avril 2022 - 17 févr. 2020 à 15:13
Bonjour,

La question est certainement triviale, mais je suis (très) débutant en développement android et après des heures passées sur le net je n'ai pas trouvé la réponse.

Dans Android Studio (3.5.3), j'ai déclaré dans strings.xml une série de ressources chaine :
<resources>
   ...
    <string name="note07">G</string>
    <string name="minor07">G/Em</string>
   ...
</resources>

Ces ressources existent aussi en français (en utilisant le Translation Editor) et pourront éventuellement l'être dans d'autres langues.

Dans l'activité, je n'ai pas de problème pour affecter cette ressource à un TextView par exemple (text="@string/note07").
Mais dans mon code Java, je souhaiterais récupérer la valeur de cette ressource pour la comparer à une saisie par exemple, et en renvoyer une autre, également déclarée dans le XML.
Typiquement, ce que je voudrais faire est ceci :
    private CharSequence GetGamme(CharSequence Fundamental)
    {
        CharSequence Result = "";
        switch(Fundamental.toString())
        {
            .....
            case "@strings/note07": Result = "@strings/minor07"; break;
            .....
            default: Result = "???";
        }
        return Result;
    }

Je ne peux pas mettre les valeurs de "case" en dur, car selon la langue la valeur de Fundamental est (par exemple) SOL en français et G par défaut.

Quelqu'un peut-il m'expliquer comment récupérer les valeurs des ressources déclarées dans le XML ?
A voir également:

3 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 894
Modifié le 17 févr. 2020 à 09:17
Bonjour,

C'est la base de l'accès aux ressources dans un projet Android ;)

String maString = context.getString(R.string.note07);


0
MGD Software Messages postés 186 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 23 avril 2022
17 févr. 2020 à 14:41
Comme je l'ai dit, je suis très débutant en Andoid. Je maitrise mille fois mieux Visual Studio et le C#...

Merci pour la réponse, mais elle ne me permet pas de sortir de mon problème, en tous cas pas en l'état : context ne contient pas de méthode getString() (mais beaucoup d'autres méthodes que je n'ai pas encore explorées).

Par contre en tapant GetString, Android Studio ma proposé getApplicationContext().getString() qui ne provoque pas d'erreur de syntaxe et devrait faire l'affaire.
Par extension, j'ai cherché et trouvé getApplicationContext().getDrawable() pour récupérer dynamiquement mes images, qui ne provoque pas non plus d'erreur de syntaxe.

Je n'ai pas encore testé tout ça (actuellement j'ai contourné le problème avec une usine à gaz), mais cela devrait fonctionner.
Encore merci de m'avoir mis le pied à l'étrier.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 894
17 févr. 2020 à 14:53
Je n'ai pas encore testé tout ça (actuellement j'ai contourné le problème avec une usine à gaz), mais cela devrait fonctionner.
Je te conseille très fortement de virer ton usine à gaz pour te rapprocher des standards. Crois-moi, tu y gagneras.
0
MGD Software Messages postés 186 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 23 avril 2022
17 févr. 2020 à 15:13
C'est évident.
Mais quand je ne peux pas passer sur un mur, j'en fais le tour.
Et dès que j'ai une échelle, je prends le chemin le plus court...

C'est ma première appli Android. Déjà, j'ai réussi à faire ce que je voulais, qui est nettement plus compliqué que ce qu'on trouve dans les tutos de développement Android. Maintenant, il faut l'optimiser. Y'a encore du boulot.

PS : je viens de commander un bouquin sur le développement Android. Je ne devrais plus avoir à poser des questions aussi basiques. Du moins je l'espère, si le bouquin est bon.
0