1

実行時に多数のTextViewをスクロールビューに追加しようとしていますが、が取得されますThe specified child already has a parent. You must call removeView on the child's parent first

main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    </LinearLayout>

</ScrollView>

testapp

@Override
public void onCreate(Bundle savedInstanceState) {

    TextView[] data;

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    View layout = findViewById(R.id.layout);

            .......................................

    data = new TextView[10];

    for (int i = 0; i < 10; i++) {

        data[i] = new TextView(this);
        data[i].setText("data = " + i);


        ((ViewGroup) layout).addView(data[i]);
    }

    setContentView(layout);

}
4

2 に答える 2

1

問題はレイアウト変数にあると思います。

このsetContentView(layout)を使用している場合、XMLに従って親のScrollViewビューがすでにあります。したがって、これは別の親にレイアウトを追加しようとします。

于 2012-06-16T12:11:54.290 に答える
1

setContentView()このように1回で2回使用することはできませんActivity。それが問題です。ここ
でこの答えを見てください:

ビューは単一の親のみを持つことができます。追加しているビュー(再利用していると思います)は、すでに別のビュー階層の一部です。本当に再利用したい場合は(おそらく使用しないことをお勧めします)、既存のビュー階層で親から切り離す必要があります。

于 2012-06-16T12:12:04.073 に答える