Вопрос

В настоящее время я создаю приложение, которое добавляет строки к существующей таблице. Код выглядит так:

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

В XML у меня есть макет таблицы, который находится внутри LineArlayout, который находится внутри Framelayout, который находится внутри табвиджета, и выглядит так:

<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>

Создание этих ярлыков работает нормально, но когда я хочу добавить текст в строку, приложение вылетает, и я получаю «нелегальную статость», подробное сообщение: подробное сообщение:

У указанного ребенка уже есть родитель. Сначала вы должны вызвать removeView () на родителей ребенка.

Я не совсем понял. Когда я смотрю на учебник как это В первую очередь нет ничего, что нужно удалить. Так что же я делаю не так?

Это было полезно?

Решение

Примечания, которую вы добавляете в свой код в табличку, который вы добавили уже в файле XML в ту же таблицу.

Поскольку элемент пользовательского интерфейса может иметь только одного родителя, это невозможно.

Я также не знаю, почему вы хотите добавить его снова, так как он уже добавлен в тот же вид.

В вашем учебном пособии я могу найти текст, который уже добавлен в таблицу в файле XML?

Другие советы

Ваш TextView уже является ребенком другого представления. Вы не можете просто изменить родителя - вы должны удалить вид от одного родителя и добавить его в другого.

Присмотревшись к ближе, вам просто не нужно вручную добавлять конкретный текстовый вид в строку таблицы - оно уже есть в соответствии с вашим XML.

Метод addView () обычно вызывается для вновь созданных представлений, а не для тех, которые вы определяете в XML.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top