title: Android GLSurfaceView in XML Layout
body: <p>I am trying to put a GLSurfaceView and a button into the same xml layout. But my application keep closing automatically whenever I run it on my device.
  Could someone please help me and tell what am I missing or what is wrong with my code? </p>
  
  <p>here is my code</p>
  
  <p>===================</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  
      &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
          android:id= "@+id/linearlayout1" &gt;
  
      &lt;Button
          android:id="@+id/buttonID"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="10dip"
          android:text="A Button" /&gt;
  
      &lt;com.example.test2.MyGLSurfaceView
          android:id="@+id/glSurfaceViewID"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_weight="0.23" /&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>================</p>
  
  <pre><code>package com.example.test2;
  
  import android.opengl.GLSurfaceView;
  import android.os.Bundle;
  import android.app.Activity;
  import android.content.Context;
  import android.view.Menu;
  import android.view.MotionEvent;
  
  public class MainActivity extends Activity {
  
      private GLSurfaceView mGLView;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          // Create a GLSurfaceView instance and set it
          // as the ContentView for this Activity
          mGLView = new MyGLSurfaceView(this);
          //setContentView(mGLView);
          setContentView(R.layout.activity_main);
      }
  
  //    @Override
      protected void onPause() {
          super.onPause();
          mGLView = (MyGLSurfaceView)findViewById(R.id.glSurfaceViewID);
          mGLView.onPause();
      }
  //
     @Override
     protected void onResume() {
          super.onResume();
          mGLView = (MyGLSurfaceView)findViewById(R.id.glSurfaceViewID);
          mGLView.onResume();
      }
  }
  
  class MyGLSurfaceView extends GLSurfaceView {
  
      private final MyGLRenderer mRenderer;
  
      public MyGLSurfaceView(Context context) {
          super(context);
  
          // Create an OpenGL ES 2.0 context.
          setEGLContextClientVersion(2);
  
          // Set the Renderer for drawing on the GLSurfaceView
          mRenderer = new MyGLRenderer();
          setRenderer(mRenderer);
  
          // Render the view only when there is a change in the drawing data
          setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
      }
  
      private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
      private float mPreviousX;
      private float mPreviousY;
  
      @Override
      public boolean onTouchEvent(MotionEvent e) {
          // MotionEvent reports input details from the touch screen
          // and other input controls. In this case, you are only
          // interested in events where the touch position changed.
  
          float x = e.getX();
          float y = e.getY();
  
          switch (e.getAction()) {
              case MotionEvent.ACTION_MOVE:
  
                  float dx = x - mPreviousX;
                  float dy = y - mPreviousY;
  
                  // reverse direction of rotation above the mid-line
                  if (y &gt; getHeight() / 2) {
                    dx = dx * -1 ;
                  }
  
                  // reverse direction of rotation to left of the mid-line
                  if (x &lt; getWidth() / 2) {
                    dy = dy * -1 ;
                  }
  
                  mRenderer.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR;  // = 180.0f / 320
                  requestRender();
          }
  
          mPreviousX = x;
          mPreviousY = y;
          return true;
      }
  
  }
  </code></pre>
  
  <p>===========================</p>
  
  <p>Thank you.</p>