title: surfaceView.getHolder not returning SurfaceHolder
body: <p>I'm trying to code an app that uses the camera. I'm getting a NullPointerException when trying to get the surfaceHolder that i eventually pass to the surfaceCreated() that starts up the camera. is there any situation when the getHolder() returns NULL?</p>
  
  <p>thanks.</p>
  
  <pre><code>package com.tecmark;
  
  import java.io.IOException;
  
  import android.app.Activity;
  
  import android.graphics.PixelFormat;
  import android.hardware.Camera;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.SurfaceHolder;
  import android.view.SurfaceView;
  import android.view.Window;
  import android.view.WindowManager;
  
  public class cameraView extends Activity implements SurfaceHolder.Callback{
  
      SurfaceView mSurfaceView;
      SurfaceHolder mSurfaceHolder;
      Camera mCamera;
      boolean mPreviewRunning;
  
   /** Called when the activity is first created. */
      @Override 
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
  
          getWindow().setFormat(PixelFormat.TRANSLUCENT);
  
          requestWindowFeature(Window.FEATURE_NO_TITLE);
  
          getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  
          WindowManager.LayoutParams.FLAG_FULLSCREEN);
  
          //setContentView(R.layout.camera_surface);   
  
          mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
          Log.i("surfaceholder = ", "about to get surface holder");
          try{
          mSurfaceHolder = mSurfaceView.getHolder();
          }catch(Exception e){
           e.printStackTrace();
          }
  
          Log.i("surfaceholder = ", ""+mSurfaceHolder.toString());
  
          mSurfaceHolder.addCallback(this);
  
          mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  
          setContentView(R.layout.camera_surface);
  
          surfaceCreated(mSurfaceHolder);
  
  
  
  
  
  
  
      }
  
   @Override
   public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
  
    if (mPreviewRunning) {
  
     mCamera.stopPreview();
  
     }
  
     Camera.Parameters p = mCamera.getParameters();
  
     p.setPreviewSize(w, h);
  
     mCamera.setParameters(p);
  
     try {
  
     mCamera.setPreviewDisplay(holder);
  
     } catch (Exception e) {
  
     e.printStackTrace();
  
     }
  
     mCamera.startPreview();
  
     mPreviewRunning = true;
  
     }
  
  
  
  
  
  
   @Override
   public void surfaceCreated(SurfaceHolder holder) {
  
  
  
  
    try{
     Log.i("camera ", "about to open camera");
           mCamera = Camera.open();
           Log.i("camera ", " camera opened");
           mCamera.getParameters();
           mCamera.setPreviewDisplay(holder);
           mCamera.startPreview();
     } catch (IOException e) {
  
      e.printStackTrace();
     }
    Log.i("camera ", "ok");
   }
  
   @Override
   public void surfaceDestroyed(SurfaceHolder holder) {
    mCamera.stopPreview();
  
    mPreviewRunning = false;
  
    mCamera.release();
  
   }
  
  
  
  
  }//end of activity
  
  
  
  01-31 15:29:17.773: WARN/System.err(9144): java.lang.NullPointerException
  01-31 15:29:17.778: WARN/System.err(9144):     at com.tecmark.cameraView.onCreate(cameraView.java:42)
  01-31 15:29:17.778: WARN/System.err(9144):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  01-31 15:29:17.778: WARN/System.err(9144):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
  01-31 15:29:17.783: WARN/System.err(9144):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
  01-31 15:29:17.783: WARN/System.err(9144):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
  01-31 15:29:17.783: WARN/System.err(9144):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
  01-31 15:29:17.783: WARN/System.err(9144):     at android.os.Handler.dispatchMessage(Handler.java:99)
  01-31 15:29:17.783: WARN/System.err(9144):     at android.os.Looper.loop(Looper.java:123)
  01-31 15:29:17.783: WARN/System.err(9144):     at android.app.ActivityThread.main(ActivityThread.java:4363)
  01-31 15:29:17.783: WARN/System.err(9144):     at java.lang.reflect.Method.invokeNative(Native Method)
  01-31 15:29:17.788: WARN/System.err(9144):     at java.lang.reflect.Method.invoke(Method.java:521)
  01-31 15:29:17.788: WARN/System.err(9144):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  01-31 15:29:17.788: WARN/System.err(9144):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  01-31 15:29:17.788: WARN/System.err(9144):     at dalvik.system.NativeStart.main(Native Method)
  01-31 15:29:17.793: DEBUG/AndroidRuntime(9144): Shutting down VM
  01-31 15:29:17.793: WARN/dalvikvm(9144): threadid=3: thread exiting with uncaught exception (group=0x4001b180)
  01-31 15:29:17.793: ERROR/AndroidRuntime(9144): Uncaught handler: thread main exiting due to uncaught exception
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tecmark/com.tecmark.cameraView}: java.lang.NullPointerException
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.os.Handler.dispatchMessage(Handler.java:99)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.os.Looper.loop(Looper.java:123)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.app.ActivityThread.main(ActivityThread.java:4363)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at java.lang.reflect.Method.invokeNative(Native Method)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at java.lang.reflect.Method.invoke(Method.java:521)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at dalvik.system.NativeStart.main(Native Method)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144): Caused by: java.lang.NullPointerException
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at com.tecmark.cameraView.onCreate(cameraView.java:47)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
  01-31 15:29:17.803: ERROR/AndroidRuntime(9144):     ... 11 more
  </code></pre>