2016-03-20 4 views
0

Ich versuche, eine Ansicht aufzublasen in meinem onCreateView aber ich halte diesen Fehler:Erste Fehler, wenn ein zweites Layout innerhalb Fragment aufzublasen versuchen onCreateView

The specified child already has a parent. You must call removeView() on the child's parent first. 

Was ich versuche, eine Ansicht aufzublasen und basierend auf die Anzahl der Elemente in einer Liste zum Hinzufügen der Ansicht, die oft zu einem linearen Layout angegeben wurde. Was mache ich hier falsch?

View v = View.inflate(getActivity(), R.layout.list_item, null); 

     for(int i = 0; i < totalItems; i++) { 
      TextView itemNumbers = (TextView) v.findViewById(R.id.itemNumbers); 
      ImageView itemBubbles = (ImageView) v.findViewById(R.id.itemBubbles); 
      itemNumbers.setText("0" + String.valueOf(i+1)); 
      itemBubbles.setTag(i); 
      final int finalI = i; 
      itemBubbles.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        setupValues(finalI); 
       } 
      }); 
      theListItems.addView(v, i); 
     } 

Antwort

1

Ihre Inflation muss in der Schleife sein. Sie werden es einmal aufblasen und dann versuchen, es mehrmals hinzuzufügen. Das zweite Mal ist es bereits hinzugefügt worden, so dass es fehlschlägt. Jeder Artikel muss einzeln aufgeblasen werden.

+0

Dank Ich wusste nicht, dass Sie auf die Inflation auch Schleife, dachte, dass es sich selbst wiederverwenden kann. – Lion789

+1

Nein. Ein Inflate erstellt eine Instanz der Ansicht. Wenn das keine Ausnahme ausgelöst hätte, hätten Sie jedes Mal ein Objekt gefunden, das überschrieben wurde. –

+0

Können Sie dies vor addView versuchen: ((ViewGroup) v.getParent()). RemoveView (v); – ARP