2011-01-31 43 views
2

我正在創建一個將行添加到現有表的應用程序。代碼如下所示:向Android上的TableRow添加視圖時出現IllegalStateException

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這就是內tabwidget內的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> 

創建者標籤工作正常,但是當我想將文本添加到行,應用程序崩潰,我得到一個「IllegalStateException異常」,詳細的信息是:

指定的孩子已經有一個父。您必須先調用孩子父母上的removeView() 。

我不太明白。當我看到像this這樣的教程時,沒有什麼東西必須先被刪除。 那我究竟做錯了什麼?

回答

1

將您在代碼中添加的tableLabel添加到已經在XML文件中添加到table的表中。

由於UI元素只能有一個父元素,因此這是不可能的。

我也不知道爲什麼你想再次添加它,因爲它已經被添加到完全相同的視圖。

在你的教程中我找不到已經添加到xml文件中的表格的textview?

+0

我試圖定義已經在XML中的標籤,因爲我在代碼中定義它時遇到了錯誤。我將在新問題中指定該錯誤。謝謝! – Lars 2011-01-31 12:48:16

2

您的textview已經是另一個視圖的子視圖。您不能簡單地更改父級 - 您必須從一個父級刪除該視圖並將其添加到另一個父級。

仔細看,你根本不需要手動添加特定的文本視圖到表格行 - 根據你的xml它已經存在了。

通常爲新創建的視圖調用addView()方法,而不是在xml中定義的視圖。

相關問題