linearLayout.addView(index,view)给出了IllegalStateException

时间:2015-01-01 14:19:08

标签: android android-layout android-view

请查看下面给出的代码片段: -

private void updateActivityView() 
{
    for(int i = 0; i < numberOfLinearLayouts; i++)
    {
        LinearLayout linearLayout = linearLayouts.get(i);

        linearLayout.removeAllViews();

        int index = 0;

        for(int j = i; j < childFrames.size(); j = j+numberOfLinearLayouts)
        {
            FrameLayout frameLayout = childFrames.get(j);

            frameLayout.setLayoutParams(frameLayoutParams);

            linearLayout.addView(frameLayout, index);

            index++;
        }
    }           
}

给出&#34; IllegalStateException:指定的子节点已经有父节点。您必须先在孩子的父母身上调用removeView()。&#34;将单个framelayout添加到linearlayout时它可以正常工作,但是当我尝试在同一线性布局上添加多个framelayout时,它会给我这个例外。

创建framelayout的代码如下: -

FrameLayout frameLayout = (FrameLayout)getLayoutInflater().inflate(R.layout.xyz_frame_layout, null, false);

int id = XYZ.getId(); //generates a random number. uniqueness guaranteed.

frameLayout.setId(id);  

上面显示的方法getId()会生成一个随机数。 id的唯一性得到保证。

请帮我找到代码段中的问题。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您收到此错误,因为framelayout已有父级。尝试像

这样的东西
FrameLayout framelayout = new FrameLayout(context);

我无法向您提供确切的代码,因为我无法理解您的代码,但您遇到的问题肯定是因为上述原因。 framelayout已经有一个父级,你再次给它一个父级。因此问题!!