title: My app crashes when using addView()
body: <p>Im a noob at android. My app keeps crashing whenever I use ViewGroup addView() method but works when I use the Activity addContentView() method.</p>
  
  <p>The reason I want to use addView() instead of addContentView() is that I want to be able to remove the layouts when not needed which is not possible with addContentView().</p>
  
  <p>Code:
  MainActivity.java</p>
  
  <pre><code>protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
      //CAMERA VIEW
      setContentView(R.layout.activity_main);
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  
      surfaceView = (SurfaceView)findViewById(R.id.surfaceview);
      surfaceHolder = surfaceView.getHolder();
      surfaceHolder.addCallback(this);
      surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  
      ViewGroup rootView = (ViewGroup) findViewById(R.layout.activity_main);
      LayoutInflater mLayoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
  
      //GRAPHICS VIEW
      glSurfaceView = new GLSurfaceView(this);
      glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
      glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
      glSurfaceView.setRenderer(new GLRenderer());
      //crash
      //rootView.addView(glSurfaceView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
      //not crash
      addContentView(glSurfaceView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
      glSurfaceView.setZOrderMediaOverlay(true);
  
      //CONTROLS VIEW
      View ctrlLayout = mLayoutInflater.inflate(R.layout.activity_controls, rootView);
          //crash
          //rootView.addView(ctrlLayout, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
          //not crash
      addContentView(ctrlLayout, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
      ctrlLayout.bringToFront();
      textView = (TextView)ctrlLayout.findViewById(R.id.text);
      rtTextView = (TextView)ctrlLayout.findViewById(R.id.rt_text);
      btnStart = (Button)ctrlLayout.findViewById(R.id.button1);
  }
  </code></pre>
  
  <p>activity_main.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      tools:context=".MainActivity" &gt;
  
      &lt;SurfaceView
          android:id="@+id/surfaceview"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>activity_controls.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent" &gt;
  
      &lt;TextView
          android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:layout_centerHorizontal="true"
          android:layout_marginBottom="14dp"
          android:text="@string/hello_world" /&gt;
  
      &lt;TextView
          android:id="@+id/rt_text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
          android:layout_alignParentTop="true"
          android:layout_marginRight="18dp"
          android:layout_marginTop="14dp"
          android:text="@string/str_rttext" /&gt;
  
      &lt;TextView
          android:id="@+id/title"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignTop="@+id/rt_text"
          android:layout_centerHorizontal="true"
          android:text="@string/str_title"
          android:textAppearance="?android:attr/textAppearanceLarge" /&gt;
  
      &lt;Button
          android:id="@+id/button1"
          android:layout_width="100dp"
          android:layout_height="wrap_content"
          android:layout_centerHorizontal="true"
          android:layout_centerVertical="true"
          android:text="@string/btn_start" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p><strong>EDIT:</strong></p>
  
  <p>I changed my code as suggested by FD_</p>
  
  <p>ViewGroup rootView  = mLayoutInflater.inflate(R.layout.activity_main, null);
  Now when I call setContentView(rootView) at the end of onCreate function, it crashes.</p>
  
  <p>Here is the logcat:</p>
  
  <pre><code>02-16 08:00:28.142: I/dalvikvm(2153): threadid=1: stack overflow on call to Landroid/view/View;.isLayoutDirectionInherited:Z
  02-16 08:00:28.142: I/dalvikvm(2153):   method requires 12+20+4=36 bytes, fp is 0xb02fe320 (32 left)
  02-16 08:00:28.152: I/dalvikvm(2153):   expanding stack end (0xb02fe300 to 0xb02fe000)
  02-16 08:00:28.152: I/dalvikvm(2153): Shrank stack (to 0xb02fe300, curFrame is 0xb0303ec4)
  02-16 08:00:28.152: D/AndroidRuntime(2153): Shutting down VM
  02-16 08:00:28.152: W/dalvikvm(2153): threadid=1: thread exiting with uncaught exception (group=0xb1aeab90)
  02-16 08:00:28.932: D/dalvikvm(2153): GC_FOR_ALLOC freed 117K, 6% free 3266K/3448K, paused 80ms, total 86ms
  02-16 08:00:29.382: D/dalvikvm(2153): GC_FOR_ALLOC freed 356K, 11% free 3423K/3844K, paused 46ms, total 47ms
  02-16 08:00:29.402: E/AndroidRuntime(2153): FATAL EXCEPTION: main
  02-16 08:00:29.402: E/AndroidRuntime(2153): Process: com.example.previewcamera, PID: 2153
  02-16 08:00:29.402: E/AndroidRuntime(2153): java.lang.StackOverflowError
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5713)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:5714)
  02-16 08:00:29.402: E/AndroidRuntime(2153):     at android.view.ViewGroup.resetRes
  02-16 08:00:29.632: D/dalvikvm(2153): GC_FOR_ALLOC freed 548K, 16% free 3386K/4000K, paused 54ms, total 55ms
  </code></pre>