Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用循环将多个视图添加到RelativeLayout_Android_Android Relativelayout - Fatal编程技术网

Android 使用循环将多个视图添加到RelativeLayout

Android 使用循环将多个视图添加到RelativeLayout,android,android-relativelayout,Android,Android Relativelayout,我正在尝试向我在xml中声明的RelativeLayout添加多个视图。循环是唯一的方法,因为我不知道需要添加多少元素,因为大小是动态的。但我犯了这个错误 java.lang.IllegalStateException:指定的子级已具有 父母亲必须首先对子级的父级调用removeView() 代码: View inf=getActivity().getLayoutFlater().inflate(R.layout.item\u table\u edit,null); RelativeLayout

我正在尝试向我在xml中声明的RelativeLayout添加多个视图。循环是唯一的方法,因为我不知道需要添加多少元素,因为大小是动态的。但我犯了这个错误

java.lang.IllegalStateException:指定的子级已具有 父母亲必须首先对子级的父级调用removeView()

代码:

View inf=getActivity().getLayoutFlater().inflate(R.layout.item\u table\u edit,null);
RelativeLayout.LayoutParams LayoutParams=新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_内容,RelativeLayout.LayoutParams.WRAP_内容);
对于(int i=0;i

这里有什么问题,因为当我试图通过单击项来添加视图时,它使用相同的代码,没有任何错误。当我通过单击没有循环的项来添加时,代码是相同的。提前感谢。

您必须在每个循环的迭代中创建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);
}
RelativeLayout.LayoutParams LayoutParams=新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_内容,RelativeLayout.LayoutParams.WRAP_内容);
对于(int i=0;i
您必须在每个循环的迭代中创建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);
}
RelativeLayout.LayoutParams LayoutParams=新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_内容,RelativeLayout.LayoutParams.WRAP_内容);
对于(int i=0;i
addMap.removeView()
调用上面的函数
addMap.addView(inf,layoutParamss)在循环内移动视图inf引用。@HardikVasani这根本没有任何意义。@ChandraSharma是对的,在第一个循环后,inf被添加到父视图中,当您将同一个子视图添加到另一个视图时,android会抛出错误。只要将inf的声明移动到循环中,它就会为每个循环创建一个子循环loop@HardikVasani我试过了。没有帮助。
addMap.removeView()
调用上面的函数
addMap.addView(inf,layoutParamss)在循环内移动视图inf引用。@HardikVasani这根本没有任何意义。@ChandraSharma是对的,在第一个循环后,inf被添加到父视图中,当您将同一个子视图添加到另一个视图时,android会抛出错误。只要将inf的声明移动到循环中,它就会为每个循环创建一个子循环loop@HardikVasani我试过了。没有帮助。