0

このコードの何が問題になっていますか?それは私にこのエラーを与えました:

指定された子にはすでに親があります。最初に子の親でremoveView()を呼び出す必要があります。

    final LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.VERTICAL);

    final LinearLayout ll2 = new LinearLayout(this);
    ll2.setOrientation(LinearLayout.HORIZONTAL);

        for(int i = 0; i < 20; i++) {
             CheckBox cb = new CheckBox(getApplicationContext());
             TextView txt = new TextView(getApplicationContext());
                txt.setText("test!");
                ll2.addView(cb);
                ll2.addView(txt);
                ll.addView(ll2); //ERROR HERE
            }
        sc.addView(ll);
4

1 に答える 1

2

ll.addView(ll2)ループに入っているため、何度も呼び出しています。forループの外側に移動します。

final LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);

final LinearLayout ll2 = new LinearLayout(this);
ll2.setOrientation(LinearLayout.HORIZONTAL);

for(int i = 0; i < 20; i++) {
    CheckBox cb = new CheckBox(getApplicationContext());
    TextView txt = new TextView(getApplicationContext());
    txt.setText("test!");
    ll2.addView(cb);
    ll2.addView(txt);
}

ll.addView(ll2);
sc.addView(ll);
于 2013-03-13T00:10:31.990 に答える