Android 动态查看通货膨胀错误

Android 动态查看通货膨胀错误,android,android-layout,Android,Android Layout,我正在通过XML创建视图 但在添加视图后,会抛出错误- 指定的子级已具有父级。必须首先对子级的父级调用removeView() 我正在使用下面的代码- LinearLayout main = new LinearLayout(mContext); main.setId(R.id.main); main.setOrientation(LinearLayout.VERTICAL); LinearLayout.LayoutParams layoutParams = new LinearLayout.L

我正在通过XML创建视图

但在添加视图后,会抛出错误-

指定的子级已具有父级。必须首先对子级的父级调用removeView()

我正在使用下面的代码-

LinearLayout main = new LinearLayout(mContext);
main.setId(R.id.main);
main.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
main.setLayoutParams(layoutParams);

LinearLayout sub1 = new LinearLayout(mContext);
sub1.setId(R.id.sub1);
sub1.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams layout_662 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
sub1.setLayoutParams(layout_662);


LinearLayout sub2 = new LinearLayout(mContext);
sub2.setId(R.id.sub2);
sub2.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams layout_943 = new  LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
sub2.setLayoutParams(layout_943);

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

    sub1.addView(imageView[i]);
    main.addView(sub1);

    sub2.addView(imageView1[i]);
    main.addView(sub2);
}
LinearLayout main=新的LinearLayout(mContext);
main.setId(R.id.main);
主。设置方向(线性布局。垂直);
LinearLayout.LayoutParams LayoutParams=新的LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_父级,
LinearLayout.LayoutParams.WRAP_内容);
main.setLayoutParams(layoutParams);
LinearLayout sub1=新的LinearLayout(mContext);
sub1.setId(R.id.sub1);
sub1.设置方向(线性布局。水平);
LinearLayout.LayoutParams layout_662=新的LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_内容,
LinearLayout.LayoutParams.WRAP_内容);
子1.设置布局参数(布局_662);
LinearLayout sub2=新的LinearLayout(mContext);
sub2.setId(R.id.sub2);
sub2.设置方向(线性布局。水平);
LinearLayout.LayoutParams layout_943=新建LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_内容,
LinearLayout.LayoutParams.WRAP_内容);
sub2.setLayoutParams(布局943);

for(int i=0;i通过以下方式更改for语句:

    main.addView(sub1);
    main.addView(sub2);

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

        sub1.addView(imageView[i]);

        sub2.addView(imageView1[i]);
    }
main.addView(sub1);
main.addView(sub2);
对于(inti=0;i你得到了

main.addView(sub1);
在for循环中。因此在第二个循环中,它已经添加到父视图中。

如下所示使用它

 for(int i=0;i<=4);i++) {
        sub1.addView(imageView[i]);
        sub2.addView(imageView1[i]);
    }
    main.addView(sub1);
    main.addView(sub2);

for(int i=0;iR u拥有xml视图)您可以看到错误日志清楚地说明问题的解决方法您是对的,但如果您仔细查看代码,它们是两个不同的图像数组。因此每个图像只属于一个父对象。imageview[]和imageview1(一)[]嗯,这可能取决于ImageView的布局参数……也许你应该检查它们。你可以在创建它们的地方显示代码,顺便说一句,从代码来看,主视图似乎没有附加到任何视图……为什么不通过xml构建布局呢?