1

有人可以告诉我为什么我的应用程序崩溃了?当我添加 1 个表格行时,一切正常,但是当我尝试添加超过 1 个表格行时,我的应用程序崩溃了

public void generaLayout(){
    TableLayout tabla = new TableLayout(this);

    for(int i = 0; i < 2; i++){
        row[i] = new TableRow(this);
        tabla.addView(row[i]);
        for(int j = 0; j < contador2; j++){
            row[i].addView(textArray[j]);
        }
    }

    layout.addView(tabla);
}
public void generaTextView(int i, String cad){
    textArray[i] = new TextView(this);
    textArray[i].setText(cad);


}

这是 logcat 6-14 04:13:33.814: E/SurfaceFlinger(36): ro.sf.lcd_density 必须定义为构建属性 06-14 04:13:34.714: E/AndroidRuntime(3733): FATAL EXCEPTION : main 06-14 04:13:34.714: E/AndroidRuntime(3733): java.lang.IllegalStateException: 指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()。06-14 04:13:34.714: E/AndroidRuntime(3733): 在 android.view.ViewGroup.addView(ViewGroup.java:3131)

4

1 回答 1

0

好的,基于该日志。

我认为这是因为您将相同的 TextView 添加到不同的行导致“指定的孩子已经有父母”。例如,您将 textArray[0] 添加到第 0 行和第 1 行。第 1 行会崩溃,因为该 textview 已经与第 0 行相关联。

您当前有一个一维 TextView 数组。并且您为每一行使用相同的数组。

如果要存储它们,则必须使用 2D 数组。例如 textArray[i][j]

您的生成必须更改为

public void generaTextView(int i, int j, String cad){
    textArray[i][j] = new TextView(this);
    textArray[i][j].setText(cad);


}

您还必须更改此设置

row[i].addView(textArray[j]);

row[i].addView(textArray[i][j]);
于 2013-06-14T04:28:28.243 回答