我正在尝试在运行时将一堆TextView添加到scrollview,但我得到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);
}
答案 0 :(得分:1)
我认为问题在于布局变量。
当你使用这个setContentView(布局)时,它已经有了一个根据XML的父ScrollView视图;所以这会尝试在不同的父级中添加布局..
答案 1 :(得分:1)
您不能在setContentView()
这样的Activity
中使用{{1}}两次。那就是问题
看看这个答案here:
视图只能有一个父级。您要添加的视图(我猜测重新使用)已经是另一个视图层次结构的一部分。如果你真的想重用它(我建议你可能不这样做),那么你必须将它与现有视图层次结构中的父项分离。