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 :

Formatage String et sharedpreferences


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 91
    Points
    91
    Par défaut Formatage String et sharedpreferences
    Bonjour à tous!
    J'ai quelques soucis avec un formatage concernant une String + une key des sharedpreferences . . .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montv.setText("STRING" + valkey_sharedpreferences);
    Avez vous une idée pour résoudre mon problème??
    Merci à tous pour vos retours!

  2. #2
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Salut,

    tu peux au moins nous dire clairement ce que tu comptes faire? Qu'est ce qui ne marche pas?

    Ton code ne fait rien d'autres que mettre du texte dans un composant qui semble être un textView. Rien à avoir avec SharedPreferences.


    Christian Djo,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 91
    Points
    91
    Par défaut
    Merci pour ton retour!
    Oups . . .désolé si je n'ai pas été assez clair!
    Je voudrai visualiser dans un TextView une string et le retour d'une clef des sharedpreferences.
    Hors, tel que écrit comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montv.setText("STRING" + valkey_sharedpreferences);
    studio me retourne un avertissement, malgré un affichage correct du TextView:
    Do not concatenate text displayed with setText. Use resource string with placeholders.
    Malgré mes recherches et différentes combinaisons, je n'arrive pas à supprimer cet avertissement.
    Sachant que la valeur retournée de la clef des SP est variable, je ne peux la fixer dans les ressources.
    Voilà donc mon problème.

  4. #4
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Salut,

    Si je comprends bien, valkey_sharedpreferences contient la valeur que tu souhaite concatener avec la chaine "STRING" ?

    Android studio exige que les chaînes de caractères en dur soient définies dans les ressources de type string. Ce que tu dois faire, aller dans l'arborescence de ton projet et déplie le dossier res, ensuite values, tu édites le fichier strings.xml, puis tu ajoutes ton string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <resources>
        <!-- Tu définis ton string ici...-->
        <string name="tonString">STRING</string>
    </resources>
    Tu appelles ensuite cette ressource de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montv.setText(getResources().getString(R.string.tonString) + valkey_sharedpreferences);

    Christian Djo,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Plutôt, si valkey_sharedpreferences est de type String (pour les autres types voir la syntaxe des motifs de formatage de la méthode String.format()) :
    <ressources>
    ...
    <string name="messageId">STRING1$s!</string>
    ...
    </resources>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montv.setText(getString(R.string.messageId, valkey_sharedpreferences));
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 91
    Points
    91
    Par défaut
    Merci pour vos retours!
    Voici les 2 chaînes déclarées dans les ressources:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <string name="lati">Lat : </string>
        <string name="longi">Long : </string>
    Mon but est d'afficher dans un TextView:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tvValLoca.setText("Lat : " + retSP_latitude + "Long : " + retSP_longitude);
    Les ret_SP_x sont des clefs des sharedpreferences.
    Voici 3 types de code . . . mais les 3 me retournent le même avertissement:
    Do not concatenate text displayed with setText. Use resource string with placeholders.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      tvValLoca.setText(getResources().getString(R.string.lati) + retSP_latitude + getResources().getString(R.string.longi) + retSP_longitude);
                tvValLoca.setText((R.string.lati)+ retSP_latitude);
                tvValLoca.setText(getResources().getString(R.string.lati) + retSP_latitude);
    Que ce soit avec un retour ou deux des SP, je n'arrive pas à avoir un code propre.
    Les 2 clefs sont au format string et ensuite mises en forme en float pour être enregistrées dans une BdD.
    Je suis un sexagénaire qui est très curieux. Avoir avoir développé en Visual Basic 6, WinDev, je me suis mis aux applis Android (celle-ci est dans le domaine de la pêche!).
    Je suis électronicien de métier, mais j'ai toujours été passionné par le développement. Tout cela pour vous dire que je suis peut être un peu long à comprendre et de ne pas trop m'en vouloir . . .

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Do not concatenate text displayed with setText. Use resource string with placeholders.
    1. "Ne pas concaténer des String", donc ne pas utiliser + pour assembler des instances de String pour créer la valeur à affecter.
    2. Une string avec un placeholder est une chaine qui contient des motifs à l'intérieur qui seront remplacées par des valeurs :
      1. select a from b where c=?
      2. Paramètre inconnu : {0}
      3. Erreur %s à la ligne %d%/%d.
      4. Erreur ${errorMessage} à la ligne ${line}/${lineCount}.

      Sont des strings avec placeholders.
      1. le premier est utilisé pour les PreparedStatement en Java
      2. le deuxième est utilisé par la classe MessageFormatter, entre autres.
      3. le troisième est utilisé par la classe Formatter, et les méthodes de convenience qui l'utilisent (comme String.format(), ou System.out.printf()...)


    Le but est de pouvoir avoir des messages différents selon un contexte (généralement la langue, mais il peut y en avoir d'autres) dont la partie variable ne se trouve pas au même endroit dans le message, selon le contexte (selon la langue par exemple), voire même ignorer certaines variables selon le contexte, ou formater (une date) différemment selon le contexte, etc.

    Les ressources Android utilisent aussi un Formatter pour gérer le remplacement des motifs, et la classe Context fournit des méthodes de convenience : getString( string avec motif, valeur du motif 1, valeur du motif 2, valeur du motif 3, etc). La javadoc de Formatter ou de String.format() donne la syntaxe des motifs.

    Il faut donc que les chaînes dans le xml contiennent les placeholders pour définir l'emplacement des valeurs et qu'on les formate avec les valeurs dans le fichier de ressources pour obtenir le message final voulu.

    Donc tu devrais écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tvValLoca.setText(getString(R.string.latilongMessage, retSP_latitude, retSP_longitude);
    avec par exemple :
    <string name="latilongMessage">Lat : %.2f Long : %.2f</string>
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 110
    Points : 91
    Points
    91
    Par défaut
    Bonjour Joêl,
    Merci pour ton retour! Ta réponse est complète et je comprends mieux mon erreur!!
    Je te remercie pour le temps que tu as pris et te souhaite une bonne journée!
    Gil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formatage de int vers string
    Par menzlitsh dans le forum Langage
    Réponses: 7
    Dernier message: 17/07/2007, 13h34
  2. Formatage particulier String
    Par mimic50 dans le forum MATLAB
    Réponses: 3
    Dernier message: 29/08/2006, 15h25
  3. [WinForms]Formatage de date en string
    Par Jinroh77 dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 03/08/2006, 18h07
  4. formatage d'une requete sql dansun string
    Par tchoua dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/07/2006, 12h25
  5. formatage d'un string
    Par mmz dans le forum Langage
    Réponses: 6
    Dernier message: 03/05/2006, 11h04

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