title: .setPreviewDisplay(holder) throwing null pointer exception
body: <p>I am developing a custom camera application.Given below is my Activity class.</p>
  
  <pre><code>public class MyCustomCam extends Activity {
  private Camera mCamera;    
  private CameraPreview mPreview;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      mCamera = getCameraInstance();       
      mPreview = new CameraPreview(this, mCamera);        
      FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);       
      preview.addView(mPreview);
  }
      public static Camera getCameraInstance(){    
          Camera c = null;    
          try {
          c = Camera.open(); // attempt to get a Camera instance    
          }   
          catch (Exception e){        
              // Camera is not available (in use or does not exist)    
              }    
          return c; // returns null if camera is unavailable}
  
         }
         }
  </code></pre>
  
  <p>Given below is my main.xml</p>
  
  <pre><code>  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"    
    android:layout_width="fill_parent"   
     android:layout_height="fill_parent"    &gt; 
   &lt;FrameLayout 
     android:id="@+id/camera_preview"    
     android:layout_width="fill_parent"
         android:layout_height="fill_parent" 
            android:layout_weight="1"    /&gt; 
          &lt;Button    android:id="@+id/button_capture"  
            android:text="Capture"   
           android:layout_width="wrap_content"    
     android:layout_height="wrap_content"    
      android:layout_gravity="center" 
     /&gt;&lt;/LinearLayout&gt;
  </code></pre>
  
  <p>And this is my CameraPreview class</p>
  
  <pre><code>public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {    
  private SurfaceHolder mHolder;    
  private Camera mCamera;    
  public CameraPreview(Context context, Camera camera) {        
      super(context);        
      mCamera = camera;        // Install a SurfaceHolder.Callback so we get notified when the       
      // underlying surface is created and destroyed.        
      mHolder = getHolder();       
      mHolder.addCallback(this); 
      // deprecated setting, but required on Android versions prior to 3.0        
      mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
      }   
  public void surfaceCreated(SurfaceHolder holder) {       
      // The Surface has been created, now tell the camera where to draw the preview.        
      try {            
          mCamera.setPreviewDisplay(holder);            
          mCamera.startPreview();        
      } catch (IOException e) {            
  
          Log.d("", "Error setting camera preview: " + e.getMessage());       
          }   
      } 
  public void surfaceDestroyed(SurfaceHolder holder) {
              // empty. Take care of releasing the Camera preview in your activity.   
      }    
  public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
          // If your preview can change or rotate, take care of those events here.        
          // Make sure to stop the preview before resizing or reformatting it.        
          if (mHolder.getSurface() == null){          // preview surface does not exist         
              return;        }        // stop preview before making changes        
          try {            
              mCamera.stopPreview();    
          } catch (Exception e){    
              // ignore: tried to stop a non-existent preview      
              }        // set preview size and make any resize, rotate or 
          // reformatting changes here        // start preview with new settings   
          try {            
              mCamera.setPreviewDisplay(mHolder);         
              mCamera.startPreview();       
          } catch (Exception e){           
              Log.d("", "Error starting camera preview: " + e.getMessage()); 
             }  
  }
     }
  </code></pre>
  
  <p>Here </p>
  
  <pre><code>   mCamera.setPreviewDisplay(holder); 
  </code></pre>
  
  <p>code is throwing null pointer exception...i cant fix that.please tell me why it is throwing exception and how can i fix that?</p>