0

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

1 に答える 1

0

コードの問題はこれだけではありませんが、あなたが不満を言っている問題は、TableRow を 1 つしか作成せず、それを 3 回追加しているためです。kMap には、同じオブジェクトを 3 回ではなく、3 つの異なる TableRow オブジェクトを含める必要があります。

于 2012-09-14T02:41:51.493 に答える