2013-06-14 3 views
1

Quelqu'un pourrait me dire pourquoi mon application plante? Quand j'ajoute 1 tablerow tout va bien, mais quand je tente d'ajouter plus de 1 ligne de table mon application CraskTableRow dynamique dans TableLayout

public void generaLayout(){ 
    TableLayout tabla = new TableLayout(this); 

    for(int i = 0; i < 2; i++){ 
     row[i] = new TableRow(this); 
     tabla.addView(row[i]); 
     for(int j = 0; j < contador2; j++){ 
      row[i].addView(textArray[j]); 
     } 
    } 

    layout.addView(tabla); 
} 
public void generaTextView(int i, String cad){ 
    textArray[i] = new TextView(this); 
    textArray[i].setText(cad); 


} 

Voici le logcat 6 au 14 avril: 13: 33,814: E/SurfaceFlinger (36): ro.sf.lcd_density doit être défini comme une propriété de construction 06-14 04: 13: 34.714: E/AndroidRuntime (3733): EXCEPTION FATALE: main 06-14 04: 13: 34.714: E/AndroidRuntime (3733): java. lang.IllegalStateException: l'enfant spécifié a déjà un parent. Vous devez d'abord appeler removeView() sur le parent de l'enfant. 06-14 04: 13: 34.714: E/AndroidRuntime (3733): à android.view.ViewGroup.addView (ViewGroup.java:3131)

+0

peut vous s'il vous plaît poster le logcat, la chose que je pense que ce pourrait être en ce moment est le textArray [j ] n'est pas défini de sorte que vous pourriez obtenir une exception de pointeur nul – Nicholas

+0

hey j'ai mis le code complet, s'il vous plaît aidez-moi –

+0

pouvez-vous s'il vous plaît poster le logcat. Il détaillera l'erreur réelle qui se passe. Vous pouvez le voir en eclipse sous window-> show view-> autre select android-> logcat double cliquez dessus et vous obtiendrez une nouvelle fenêtre qui montrera les erreurs que vous obtenez. – Nicholas

Répondre

0

Ok, basé sur ce journal.

Je pense que c'est parce que vous ajoutez le même TextView à différentes lignes provoquant "L'enfant spécifié a déjà un parent". E.g Vous ajoutez textArray [0] Pour aligner 0, et 1. Row 1, il se bloquerait car cette textview est déjà associée à la ligne 0.

Vous avez actuellement un tableau TextView unidimensionnel. et vous utilisez ce même tableau pour chaque ligne.

Si vous voulez les stocker, vous allez devoir utiliser un tableau 2D. Par exemple, tabLibellés [i] [j]

Votre générer devrait changer pour

public void generaTextView(int i, int j, String cad){ 
    textArray[i][j] = new TextView(this); 
    textArray[i][j].setText(cad); 


} 

Vous aussi changer ce

row[i].addView(textArray[j]); 

à

row[i].addView(textArray[i][j]); 
+0

ça marche !!! merci beaucoup Nicholas! Vous êtes DIEU !!!;) –

+0

Pas de problème, contente que je puisse aider. – Nicholas

Questions connexes