我试图将多个视图添加到我在xml中声明的RelativeLayout中。循环是唯一的方法,因为大小是动态的,因此我不知道需要在其中添加多少个元素。但是我遇到了这个错误。
java.lang.IllegalStateException:指定的子对象已经有一个 父母您必须先在孩子的父母上调用removeView()。
代码:
View inf = getActivity().getLayoutInflater().inflate(R.layout.item_table_edit, null);
RelativeLayout.LayoutParams layoutParamss = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < putzones.size(); i++) {
inf.setX((float) putzones.get(i).getPosX());
inf.setY((float) putzones.get(i).getPosY());
addMap.addView(inf, layoutParamss);
}
这里有什么问题,因为当我尝试通过单击项目添加视图时,它可以使用相同的代码,而不会出现任何错误。当我通过单击没有循环的项目添加代码时,代码是相同的。预先感谢。
答案 0 :(得分:2)
您必须在每个循环的迭代中创建一个item_table_edit的新实例。
RelativeLayout.LayoutParams layoutParamss = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < putzones.size(); i++) {
View inf = getActivity().getLayoutInflater().inflate(R.layout.item_table_edit, null);
inf.setX((float) putzones.get(i).getPosX());
inf.setY((float) putzones.get(i).getPosY());
addMap.addView(inf, layoutParamss);
}