Pregunta

Actualmente estoy creando una aplicación que agrega filas a una tabla existente. El código se ve así:

TextView exampleTextView = (TextView) messageView.findViewById(R.id.exampleLabel);
exampleTextView.setText(locationMsg.getMessageContent());

TableRow tr = (TableRow) messageView.findViewById(R.id.tableRow);
tr.addView(exampleTextView);
table.addView(tr);

En el XML tengo un diseño de mesa que está dentro de un LinearLayout que está dentro de un framelayout que está dentro de un Tabwidget y se ve así:

<TableLayout
 android:id="@+id/distanceTable" 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:layout_gravity="center"
 android:background="#DDDDDD"
 android:stretchColumns="1" >
 <TableRow>
  <TextView
  android:textColor="#000000"
  android:text="@string/label_device"
  android:layout_gravity="center"
  android:padding="3dip"
  android:textSize="18sp" />

  <TextView
  android:textColor="#000000"
  android:text="@string/label_distance"
  android:layout_gravity="center"
  android:padding="3dip"
  android:textSize="18sp" />
  <TextView
  android:textColor="#000000"
  android:text="@string/label_time"
  android:layout_gravity="center"
  android:padding="3dip"
  android:textSize="18sp" />
 </TableRow>
 <TableRow android:id="@+id/tableRow" >
  <TextView
  android:id="@+id/exampleLabel"
  android:textColor="#000000"
  android:layout_gravity="center"
  android:padding="3dip"
  android:textSize="18sp" />
  <TextView
  android:id="@+id/anotherExampleLabel"
  android:textColor="#000000"
  android:layout_gravity="center"
  android:padding="3dip"
  android:textSize="18sp" />
  <TextView
  android:id="@+id/someOtherLabel"
  android:textColor="#000000"
  android:layout_gravity="center"
  android:padding="3dip"
  android:textSize="18sp" />
 </TableRow>
</TableLayout>

La creación de esas etiquetas funciona bien, pero cuando quiero agregar el texto a una fila, la aplicación se bloquea y obtengo una "ilegalstateException", el mensaje detallado es:

El niño especificado ya tiene un padre. Debe llamar a removeView () en el padre del niño primero.

No lo entiendo del todo. Cuando miro un tutorial como este No hay nada que deba eliminarse primero. Entonces, ¿qué estoy haciendo exactamente mal?

¿Fue útil?

Solución

El ExplaLabel que agrega su código al Tablerow que ya agregó en el archivo XML a la misma tabla.

Dado que un elemento UI solo puede tener uno de los padres, esto no es posible.

Tampoco sé por qué quieres agregarlo nuevamente, ya que ya se agrega a la vista exactamente de la misma misma vista.

En su tutorial, ¿puedo encontrar una vista textview que ya se agregue a la tabla en el archivo XML?

Otros consejos

Su TextView ya es hijo de otra vista. No puede simplemente cambiar el padre: debe eliminar la vista de un padre y agregarla a otro.

Mirando más de cerca, simplemente no tiene que agregar manualmente la vista de texto particular a la fila de la tabla; ya está allí según su XML.

Método addView () generalmente invocado para vistas recién creadas, no para las que define en XML.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top