ViewGroup.java AddViewInner问题

时间:2016-09-22 14:32:39

标签: android listview android-fragments android-activity

我一直在跟踪错误,它基本上是相同的错误,但在不同的行上不断出现

  

致命异常:java.lang.IllegalStateException:指定的子级已有父级。您必须首先在孩子的父母上调用removeView()。          在android.view.ViewGroup.addViewInner(ViewGroup.java:3883)

     

致命异常:java.lang.IllegalStateException:指定的子级已有父级。您必须首先在孩子的父母上调用removeView()。          在android.view.ViewGroup.addViewInner(ViewGroup.java:4312)

     

致命异常:java.lang.IllegalStateException:指定的子级已有父级。您必须首先在孩子的父母上调用removeView()。          在android.view.ViewGroup.addViewInner(ViewGroup.java:4310)

我尝试过的事情: -

  • 在添加任何片段时,我将此代码添加到onCreateView

    ((ViewGroup)view.getParent())。removeView(view); view = inflater.inflate(R.layout.create_carpool_layout,container,false); 返回视图;

    然后给视图充气

  • 在适配器中扩充布局/视图时,我也确保从父视图中删除视图

我不确定导致此问题的原因

1 个答案:

答案 0 :(得分:0)

尝试仔细检查如何给视图充气。

有两种可能的方式:

  1. 将父母传递给inflater:

    LayoutInflater.from(context).inflate(R.layout.layout, this, true);
    
  2. 保留没有父级的视图:

    LayoutInflater.from(context).inflate(R.layout.layout, null);
    
  3. 使用第一种方法时,您无法使用addView()作为参数调用view
    使用第二种方式,视图不会固定到父级,因此您可以调用addView()