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 :

Pourquoi ressource string retourne id


Sujet :

Android

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Par défaut Pourquoi ressource string retourne id
    Bonjour

    J'aimerais mettre une ressource strings dans une variable genre...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String textWelcome = string.textWelcomeBack;
    le string.textWelcomeBack est un int... l'id
    j'ai essayer avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String textWelcome = String.ValueOf(string.textWelcomeBack);
    la ca donne encore juste son id

    Ce que je comprend pas c'est que sur un bouton.setText ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buttonPlay.setText(string.textButtonPlay_new);
    Mais quand j'essaye dans un TextView ca me donne 2123443556 mon nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String playerName = "mon nom"
    textNews.setText(string.textWelcomeBack + playerName);
    Quelqun peut m'aider svp... Je veux afficher le texte pas l'ID

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 47
    Par défaut
    Salut,

    Pour accéder à une chaine que tu aurait saisi dans res/string, il te faut utiliser "R.string.nomDeTaChaine"
    En gros android répertorie automatiquement les ressources de ton projet sans la classe R si j'ai bien compris

    Si tu veux accéder à cette valeur en XML, ça sera "@string\nomDeTaChaine" il me semble !

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Pour les fragments : getActivity().getString(R.string.laStringQueTuVeux);.

    M'enfin l'important est de passer par Context#getString(int)

    Sinon, la raison pour laquelle ça fonctionne sur les TextView est très simple : regarde la documentation, tu verras qu'il existe plusieurs méthodes setText.
    Une d'entre elles prend un CharSequence et une autre prend un int.
    La seconde fait la transformation id => String de la même manière qu'au-dessus.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Par défaut
    Je sais... mais ca marche pas... en xml tout va bien mais en java une fois sur deux aulieu de me donner le string de ma ressource ca me donne l'id de la chaine

    Genre j'ai une ressource string
    Disons um string dans value-fr Bonjour qui vaut "allo "
    En java je fais

    monNom = "toi";
    monText.setText(R.string.Bonjour + monNom);

    Ca devrais renvoyer allo toi
    Mais 1 FOIS SUR 2 va donne qqchose comme
    274957373 toi... je comprend pas... des fois ca marche des fois non...maudit java

    Malheureusement je suis plus vhez moi la mais je viens de trouver de quois
    String monString = getRessource().getString (R.string.Bonjour);
    Mais je viens de realiser que tiu as mis ton R.string.maChaine entre "???

    D'ici a ce que jessaye quelqu'un peut me dire si ca marche

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Pas Java le problème ici, mais plutôt ta compréhension de l'inférence de type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monNom = "toi";
    monText.setText(R.string.Bonjour + monNom);
    Ce bout de code ne peut pas, et ne renverra jamais "allo toi".

    Ici, monNom est une String. R.string.Bonjour est un int.

    Il existe plusieurs méthodes setText et il faut déterminer laquelle appeler.
    R.string.Bonjour + monNom => int + String = String.
    C'est donc une concaténation d'un entier et d'une String, qui résulte en une String.
    Tu utiliseras donc la méthode setText(String), qui fait exactement ce que tu lui demandes, à savoir mettre la String que tu rentres et l'afficher ensuite.

    Si tu désirs afficher la concaténation de la valeur représentée par R.string.bonjour, tu dois d'abord la demander. Aucun langage à ma connaissance (mais je suis curieux et ne connait pas tout ) ne peux comprendre ce que tu as dans la tête

    Si tu essayes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monNom = "toi";
    monText.setText("R.string.Bonjour" + monNom);
    Le résultat sera : R.string.Bonjourtoi

    "R.string.Bonjour" + monNom => String + String = String.
    setText(String)

    Le code correct est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monNom = "toi";
    monText.setText(getString(R.string.Bonjour) + monNom);
    getString(int) se charge d'aller chercher dans les ressources et de prendre la bonne String correspondante pour la renvoyer. Les ressources String sont généralement uniquement fonction de la Locale, mais il est possible d'en faire selon n'importe quel modificateur de ressources standard Android.
    Bref, getString(int) renvoi un String, donc getString(R.string.Bonjour) + monNom => String + String = String.
    setText(String), et ça t'affichera : allo toi

    Ps : pour "ça marche pas", cf ma signature.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Par défaut
    Wow merci hizin
    Ca c bien expliqué. .. je comprend tout la... merci j'ai hate d'etre chez nous pour corriger 2-3 codes...
    Alors voila pq monBouton.setText (R.string.maChaine) fonctionnais. Justilisais le type String (int)!? Mon text lui combinait les deux.
    merci je ten redonne des nouvelles.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/09/2010, 07h55
  2. Réponses: 6
    Dernier message: 06/09/2009, 14h03
  3. Tuto MVVM : dans le source, une property de type string retourne un booléen ?!
    Par zax-tfh dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 23/03/2009, 08h35
  4. Pourquoi mon compteur retourne a 0 apres 374?
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 01/02/2008, 11h42
  5. Réponses: 2
    Dernier message: 12/05/2006, 23h01

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