我必须在 java 中创建一个表,并且在执行之前不知道行数。所以我有以下创建表的java代码。但是,当我尝试将表格行添加到表格布局时,它会引发非法状态异常。我将如何解决这个问题?
Map<Integer,TableRow> kMap = null;
for(int i=0;i<noofrows;i++)
{
TableRow test=new TableRow(this);
kMap = new HashMap<Integer,TableRow>();
for(int k = 0; k < 3; k++)
{
kMap.put(k, test);
}
}
TextView empty = new TextView(this);
// title column/row
TextView title = new TextView(this);
title.setText("Java Weather Table");
TableRow.LayoutParams params = new TableRow.LayoutParams();
params.span = 6;
rowTitle.addView(title, params);
//Add some more fields to the rows
table1.addView(rowTitle);
table1.addView(kMap.get(0));
//Exception is thrown
table1.addView(kMap.get(1));
table1.addView(kMap.get(2));
//table1.addView(rowConditions);
setContentView(table1);
记录猫跟踪:
09-14 07:02:50.265: E/AndroidRuntime(384): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
09-14 07:02:50.265: E/AndroidRuntime(384): at android.view.ViewGroup.addViewInner(ViewGroup.java:1970)
09-14 07:02:50.265: E/AndroidRuntime(384): at android.view.ViewGroup.addView(ViewGroup.java:1865)
09-14 07:02:50.265: E/AndroidRuntime(384): at android.widget.TableLayout.addView(TableLayout.java:418)
09-14 07:02:50.265: E/AndroidRuntime(384): at android.view.ViewGroup.addView(ViewGroup.java:1822)
09-14 07:02:50.265: E/AndroidRuntime(384): at android.widget.TableLayout.addView(TableLayout.java:400)
09-14 07:02:50.265: E/AndroidRuntime(384): at android.view.ViewGroup.addView(ViewGroup.java:1802)
09-14 07:02:50.265: E/AndroidRuntime(384): at android.widget.TableLayout.addView(TableLayout.java:391)