2010-07-09 12 views
12

Ich versuche, Ansichten zu einem linearen Layout programmgesteuert hinzuzufügen.Android: Fügen Sie zwei Textansichten programmgesteuert hinzu

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); 
    } 

Zuerst habe ich nur die informationsView hinzugefügt, und alles hat gut funktioniert. Butt nach dem Hinzufügen auch die Line-View, es stürzte mit dem folgenden Fehler ab:

java.lang.IllegalStateException: Das angegebene Kind hat bereits ein Elternteil. Sie müssen zuerst removeView() für das übergeordnete Element des Kindes aufrufen. So

Ich versuchte addView (Blick v, int index), aber es stürzte mit der gleichen Botschaft ...

Hat jemand eine Lösung?

Danke, Martin

Antwort

2

Sie können die gleiche Kind Ansicht mehrfach in der gleichen übergeordneten Ansicht nicht hinzufügen. Sie müssen jedes Mal eine neue Ansicht erstellen oder eine neue Ansicht aufblasen.

12

Wie gpmoo7 gesagt, Sie jedes Mal eine neue Ansicht in der Schleife erzeugen, müssen

@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); 
    } 

} 
Verwandte Themen