【问题标题】:Specified child already has a parent error. Only occurs if called in different loop指定的子级已经有父级错误。仅在不同循环中调用时发生
【发布时间】:2014-01-05 14:05:34
【问题描述】:

我正在尝试为 android 进行排序线性布局。但是,要对布局进行排序,需要在将其添加到布局之前对其进行排序。但是,如果我想稍后添加对象,它会说孩子已经有了父母。似乎他们被自动分配了一个父母。这是正常工作的正常代码:

    post_list = new ArrayList<Post>();
    for(int i = 0; i < 100; i++) {
        Post post = new Post(this, "#4c66a4", "#FFFFFF");
        post_list.add(post);

        View list = (View) post.show();
        ll.addView(list, layoutParams);
    }

但是,当我以后想添加视图时,就不可能了:

    post_list = new ArrayList<Post>();
    for(int i = 0; i < 100; i++) {
        Post post = new Post(this, "#4c66a4", "#FFFFFF");
        post_list.add(post);
    }

    for (int i = 0; i < post_list.size(); i++) {
        Post p = post_list.get(i);
        View list = (View) p.show();
        ll.addView(list, layoutParams);

    }

知道这个问题是怎么引起的吗? 提前致谢

【问题讨论】:

  • p.show() 是做什么的?如果它返回之前返回的相同视图,当然它已经被添加到父视图。

标签: java android android-linearlayout parent-child


【解决方案1】:

如果你必须发现添加父节点的原因,我们需要查看 logcat 和更多代码。不过,这很可能是原因:

"specified child already has a parent" error

但如果你只是想“强制”添加视图,那么在添加之前调用它:

((ViewGroup)list.getParent()).removeView(list);

从其父视图中删除视图并将其添加到您喜欢的位置。

【讨论】:

  • 刚重新启动,由于某种原因它突然起作用了。感谢您的回复
猜你喜欢
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多