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 :

Ressources strings dynamiques


Sujet :

Android

  1. #1
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut Ressources strings dynamiques
    Bonjour,

    J'ai une ressource string dans mon fichier strings.xml que voici :

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    	<string name="num_e1_n1">%1$s</string>
    </resources>

    Puis dans mon fichier layout, le TextView qui prend la ressource :

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <TextView
        android:id="@+id/num_joueur_e1_n1"
        style="@style/num_joueur"
        android:layout_alignTop="@id/maillot_rouge1"
        android:layout_centerHorizontal="true"
        android:text="@string/num_e1_n1" />

    Et enfin ma méthode OnCreate() :

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_saisie_stats);
     
          // ...
     
        Resources res = getResources();
        String numero = String.format(res.getString(R.string.num_e1_n1), 98);
        num_rouge1 = (TextView) findViewById(R.id.num_joueur_e1_n1);
        num_rouge1.setText(numero);
     
        // ...
    }

    Malheureusement, au lancement de mon application mon TextView affiche '%1$s' et non 98 comme je le souhaite.
    J'ai l'impression que ma ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    num_rouge1.setText(numero);
    ne s'execute pas, et je ne comprends pas pourquoi.

    Merci à celui ou ceux qui pourront me dire ce qui ne vas pas.

    PS: 98 est juste un exemple, ça sera une variable par la suite.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    %1$s c'est pour insérer une chaine de caractère, or 98 est un nombre donc il faudrait mettre %1$d

    http://developer.android.com/referen...Formatter.html

  3. #3
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut
    Tu as raison, mais ca ne vient pas de ça, j'avais déja essayé.

    Non, j'ai fait des tests et c'est bien mon setText qui ne fonctionne pas, mais je vois pas pourquoi.
    Personne a une idée?

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    essai de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String numero = String.format(res.getString(R.string.num_e1_n1), 98);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String numero = res.getString(R.string.num_e1_n1, 98);
    et l'erreur vient peut-être pas de %1$s mais si tu le laisse c'est sur que ça marchera pas.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    D'ailleurs je vois pas trop pourquoi tu stocke ça dans un fichier xml
    il te suffit de déclarer ta chaine en java et de la passer directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String numero ="89";
    num_rouge1.setText(numero);

  6. #6
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut
    Oui oublions les strings dynamiques.

    Mais si je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    num_rouge1 = (TextView) findViewById(R.id.num_joueur_e1_n1);
    String numero = "89";
    num_rouge1.setText(numero);
    A l'affichage, le Textview a pour valeur celle qu'on lui donne dans le layout, ou aucune valeur (si on lui donne rien).
    En gros j'ai l'impression que mon setText n'a aucun effet, j'ai cherché partout, je ne trouve aucune solution.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    euh ouai la c'est bizarre ...
    ton num_rouge1 tu l'as déclaré comment ?

  8. #8
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class SaisieStatsActivity extends Activity {
        public TextView num_rouge1 = null;
        // ...
        public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_saisie_stats);
     
                    num_rouge1 = (TextView) findViewById(R.id.num_joueur_e1_n1);
                    String numero = "89";
                    num_rouge1.setText(numero);
        }
    }
    Je suis au fond du seau.

    J'ai trouvé qu'une seule personne qui a le même problème:
    http://www.daniweb.com/software-deve...ettext-problem

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    Ton appli crashe pas c'est pas si mal ^^ quoique ... tu saurais où se trouve l'erreur au moins ^^
    euh essai d'enlever cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public TextView num_rouge1 = null;
    et tu rajoute juste TextView devant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    num_rouge1 = (TextView) findViewById(R.id.num_joueur_e1_n1);
    ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextView num_rouge1 = (TextView) findViewById(R.id.num_joueur_e1_n1);
    Et un détail : clean le projet avant de relancer.

  10. #10
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut
    Bla bla cannot be resolved to a variable, bref ça marchera pas non plus.

    J'ai lancé un autre projet, j'ai testé un setText sur un TextView de la meme manière et ça fonctionne à merveille...
    Bref, va comprendre pourquoi ça marche pas sur mon projet.

    Écoute merci d'avoir essayé.
    Si quelqu'un a une idée qu'il n'hésite pas.

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 149
    Points : 196
    Points
    196
    Par défaut
    "cannot be resolved to a variable" c'est quand tu déclare mal une variable en général ...
    montre comment t'as essayé
    PS : t'as bien clean ?

  12. #12
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            <activity android:name="vue.SaisieStatsActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    Il suffisait seulement de rajouter le noeud <intent-filter> pour mon activité dans le manifest...

    Bref, me voila soulagé.

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

Discussions similaires

  1. Pourquoi ressource string retourne id
    Par JackDannyL dans le forum Android
    Réponses: 5
    Dernier message: 17/01/2014, 01h44
  2. dll copie string dynamique
    Par ouiouioui dans le forum Débuter
    Réponses: 4
    Dernier message: 10/10/2011, 12h16
  3. [Interface] Projet multi-langue sous C++ Builder, message interne en ressource (String Tables)
    Par otacon ghost dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/08/2011, 16h46
  4. ada string dynamique
    Par lovoo dans le forum Ada
    Réponses: 1
    Dernier message: 31/05/2010, 09h15
  5. [VB6] creation de variable de type string dynamiquement
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 12/06/2003, 16h59

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