2010-07-09 5 views
12

J'essaie d'ajouter des vues à une disposition linéaire par programmation.Android: Ajouter deux affichages de texte par programme

LinearLayout layout  = (LinearLayout) findViewById(R.id.info); 
    String [] informations = topOffer.getInformations(); 
    TextView informationView; 
    View line = new View(this); 
    line.setLayoutParams(new LayoutParams(1, LayoutParams.FILL_PARENT)); 
    line.setBackgroundColor(R.color.solid_history_grey); 
    for (int i = 0; i < informations.length; i++) { 
     informationView = new TextView(this); 
     informationView.setText(informations[i]); 
     layout.addView(informationView, 0); 
     layout.addView(line, 1); 
    } 

D'abord, j'ai seulement ajouté les informations, et tout a bien fonctionné. Butt après avoir ajouté aussi le line-View, il s'est écrasé avec l'erreur suivante:

java.lang.IllegalStateException: L'enfant spécifié a déjà un parent. Vous devez d'abord appeler removeView() sur le parent de l'enfant.

donc j'ai essayé addView (Voir v, int index), mais il est écrasé avec le même message ...

A quelqu'un une solution?

Merci, Martin

Répondre

2

Vous ne pouvez pas ajouter le même point de vue des enfants plusieurs fois dans la même vue parent. Vous devez créer une nouvelle vue ou gonfler une nouvelle vue à chaque fois.

12

Comme gpmoo7 dit que vous devez créer chaque fois qu'une nouvelle vue dans la boucle

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.linear); 

    LinearLayout layout = (LinearLayout) findViewById(R.id.linear); 

    String[] informations = new String[] { "one", "two", "three" }; 
    TextView informationView; 

    for (int i = 0; i < informations.length; i++) { 
     View line = new View(this); 
     line.setLayoutParams(new LayoutParams(1, LayoutParams.MATCH_PARENT)); 
     line.setBackgroundColor(0xAA345556); 
     informationView = new TextView(this); 
     informationView.setText(informations[i]); 
     layout.addView(informationView, 0); 
     layout.addView(line, 1); 
    } 

} 
Questions connexes