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 :

Utilisation en boucle d'une même variable


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 12
    Points
    12
    Par défaut Utilisation en boucle d'une même variable
    Bonjour,

    J'ai du mal à me servir d'une même variable plusieurs fois. J'aimerai créer une TableRow qui me servira à "alimenter" ma TableLayout en boucle.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    TableRow lr = new TableRow(context);
    			lr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    			lr.setGravity(Gravity.CENTER_HORIZONTAL);
    //...
    do
    		{
    			score = cursorToScore(c);
     
    			if(showID && showPlayer && showScore)
    			{
     
    				t1.setGravity(Gravity.CENTER);
    				t1.setText("" + score.get_id());
     
    				t2.setGravity(Gravity.CENTER);
    				t2.setText("" + score.get_player());
     
    				t3.setGravity(Gravity.CENTER);
    				t3.setText("" + score.get_score());
    				System.out.println("bbbb");
    				lr.addView(t1);System.out.println("eeee");
    				lr.addView(t2);
    				lr.addView(t3);
    			}
    			else if(showID && showPlayer && !showScore)
    			{
    				t1.setGravity(Gravity.CENTER);
    				t1.setText("" + score.get_id());
     
    				t2.setGravity(Gravity.CENTER);
    				t2.setText("" + score.get_player());
     
    				lr.addView(t1);
    				lr.addView(t2);
    			}
    			else if(showID && !showPlayer && showScore)
    			{
    				t1.setGravity(Gravity.CENTER);
    				t1.setText("" + score.get_id());
     
    				t3.setGravity(Gravity.CENTER);
    				t3.setText("" + score.get_score());
     
    				lr.addView(t1);
    				lr.addView(t3);
    			}
    			else if(!showID && showPlayer && showScore)
    			{
    				t2.setGravity(Gravity.CENTER);
    				t2.setText("" + score.get_player());
     
    				t3.setGravity(Gravity.CENTER);
    				t3.setText("" + score.get_score());
     
    				lr.addView(t2);
    				lr.addView(t3);
    			}
    			else if(showID && !showPlayer && !showScore)
    			{
    				t1.setGravity(Gravity.CENTER);
    				t1.setText("" + score.get_id());
     
    				lr.addView(t1);
    			}
    			else if(!showID && showPlayer && !showScore)
    			{
    				t2.setGravity(Gravity.CENTER);
    				t2.setText("" + score.get_player());
     
    				lr.addView(t2);
    			}
    			else if(!showID && !showPlayer && showScore)
    			{
    				t3.setGravity(Gravity.CENTER);
    				t3.setText("" + score.get_score());
     
    				lr.addView(t3);
    			}
    			else
    				return null;
     
    			tl.addView(lr);
    		}while(c.moveToNext());
    Donc en premier je créer ma TableRow (ma TableLayout et aussi créer), en suite je récupère le score où se trouve mon curseur. Puis suivant certains paramètre (pour l'instant je teste avec le premier if) je modifie mes TextView et je les ajoute à ma TableRow... sauf que c'est ici ou ça plante.... Jusqu'au System.out.println("bbbbb"); tout se passe bien et arriver au lr.addView(t1); ça bug car System.out.println("eeee"); ne s'exécute pas.
    J'ai le droit à :
    Caused by : java.lang.IllegalStateException : The specified child already has a parent. You msut call removeView() on the child's parent first.

    Avez-vous une idée ? Je ne comprend pas...

    Cordialement.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    Çela veut dire que ton TextView t1 a deja été ajoute dans une autre View.
    Tu ne peux pas ajouter le même TextView a plusieurs TableRow. De même tu ne pourras pas ajouter la même TableRow au même TableLayout.
    Tu dois creer une nouvelle TableRow et de nouveaux TextView a chaque itération de ta boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    do
    {
    	// nouvelle TableRow
    	TableRow lr = new TableRow(context);
    	lr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    	lr.setGravity(Gravity.CENTER_HORIZONTAL);
    
    	// Creation des TextView ici
            //...
            //...    
            //...
    
    	score = cursorToScore(c);
    
    	if(showID && showPlayer && showScore)
    	{
    
    		t1.setGravity(Gravity.CENTER);
    		t1.setText("" + score.get_id());
    
    		t2.setGravity(Gravity.CENTER);
    		t2.setText("" + score.get_player());
    
    		t3.setGravity(Gravity.CENTER);
    		t3.setText("" + score.get_score());
    		System.out.println("bbbb");
    		lr.addView(t1);System.out.println("eeee");
    		lr.addView(t2);
    		lr.addView(t3);
    	}
    	else if(showID && showPlayer && !showScore)
    	{
    		t1.setGravity(Gravity.CENTER);
    		t1.setText("" + score.get_id());
    
    		t2.setGravity(Gravity.CENTER);
    		t2.setText("" + score.get_player());
    
    		lr.addView(t1);
    		lr.addView(t2);
    	}
    	else if(showID && !showPlayer && showScore)
    	{
    		t1.setGravity(Gravity.CENTER);
    		t1.setText("" + score.get_id());
    
    		t3.setGravity(Gravity.CENTER);
    		t3.setText("" + score.get_score());
    
    		lr.addView(t1);
    		lr.addView(t3);
    	}
    	else if(!showID && showPlayer && showScore)
    	{
    		t2.setGravity(Gravity.CENTER);
    		t2.setText("" + score.get_player());
    
    		t3.setGravity(Gravity.CENTER);
    		t3.setText("" + score.get_score());
    
    		lr.addView(t2);
    		lr.addView(t3);
    	}
    	else if(showID && !showPlayer && !showScore)
    	{
    		t1.setGravity(Gravity.CENTER);
    		t1.setText("" + score.get_id());
    
    		lr.addView(t1);
    	}
    	else if(!showID && showPlayer && !showScore)
    	{
    		t2.setGravity(Gravity.CENTER);
    		t2.setText("" + score.get_player());
    
    		lr.addView(t2);
    	}
    	else if(!showID && !showPlayer && showScore)
    	{
    		t3.setGravity(Gravity.CENTER);
    		t3.setText("" + score.get_score());
    
    		lr.addView(t3);
    	}
    	else
    		return null;
    
    	tl.addView(lr);
    	}
    while(c.moveToNext());

  3. #3
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Oui, tu dois faire à chaque fois: t1 = new TextView()... row = new TableRow()...

    Ce sont des instances différentes.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Tout d'abord je m'excuses de ne pas avoir répondu avant , j'étais un peu beaucoup.

    Ca fonctionne comme je le souhaite.

    Je vous remercie.

    Cordialement,

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

Discussions similaires

  1. [awk] Utiliser plusieurs FS sur une même ligne
    Par novices dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 06/08/2008, 18h45
  2. Utiliser le contenu d'une macro variable
    Par stefsas dans le forum Macro
    Réponses: 8
    Dernier message: 22/05/2008, 10h17
  3. Utilisation d'une même variable dans différents fonctions de Callback
    Par houjuventini dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 16/11/2007, 08h58
  4. [vector] Partager une même variable entre deux objets.
    Par Ekinoks dans le forum SL & STL
    Réponses: 18
    Dernier message: 25/08/2005, 20h40
  5. [Applet]Utiliser plusieurs Applet dans une même classe
    Par BRAUKRIS dans le forum Applets
    Réponses: 5
    Dernier message: 11/06/2004, 15h27

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