linearLayout.addView(index, view) 给出 IllegalStateException

linearLayout.addView(index, view) gives IllegalStateException

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

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++;
        }
    }           
}

给出 "IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first." 当将单个框架布局添加到线性布局时它工作正常,但是当我试图在同一线性布局上添加多个框架布局时它给了我这个异常。

创建框架布局的代码如下:-

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的唯一性。

请帮我找出代码片段中的问题。提前致谢。

您收到此错误消息是因为 framelayout 已有父级。试试像

FrameLayout framelayout = new FrameLayout(context);

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