请查看下面给出的代码片段: -
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的唯一性得到保证。
请帮我找到代码段中的问题。提前谢谢。
答案 0 :(得分:1)
您收到此错误,因为framelayout已有父级。尝试像
这样的东西FrameLayout framelayout = new FrameLayout(context);
我无法向您提供确切的代码,因为我无法理解您的代码,但您遇到的问题肯定是因为上述原因。 framelayout已经有一个父级,你再次给它一个父级。因此问题!!