title: White screen on activity start
body: <p>I'm not sure whether I'm understanding this properly but according to the life cycle of an activity onCreate is run first. As such, I've attempted to continue to run the activity from there by calling the onStart method. </p>
  
  <p>Not sure whether that is even the correct thing to do. Regardless, the moment I start the activity (through a button in the main) all I see is a white screen. I've got setContentView but it doesn't appear that onCreate is even being run. </p>
  
  <p>I also have the activity included in the manifest correctly and I'm sure of that. </p>
  
  <p>Still new to all this and really unsure what to do though and would like some advice on the proper method of operating the activities methods. This community is fantastic and has helped me a lot in the past so thank you.</p>
  
  <pre><code>package example.myapplication;
  
  import android.app.Activity;
  import android.content.Context;
  import android.hardware.Camera;
  import android.net.Uri;
  import android.os.Bundle;
  import android.os.Environment;
  import android.util.Log;
  import android.view.SurfaceHolder;
  import android.view.SurfaceView;
  import android.view.View;
  import android.widget.Button;
  
  import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  
  /** A basic Camera preview class */
  public class CameraPreview extends Activity implements SurfaceHolder.Callback{
  
  private android.hardware.Camera.PictureCallback mPicture;
  private Camera mCamera;
  private CameraPreview mPreview;
  private SurfaceHolder mHolder;
  private SurfaceHolder holder;
  
  public void setContentView(int activity_camera) {}
  public static final int MEDIA_TYPE_IMAGE = 1;
  public static final int MEDIA_TYPE_VIDEO = 2;
  private static final String TAG = "CameraPreview";
  
  SurfaceView camera_preview;
  Button button_capture;
  
  public CameraPreview(){
      super();
  }
  
  @Override
  public void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_camera);
  
      button_capture = (Button) findViewById(R.id.button_capture);
      camera_preview = (SurfaceView) findViewById(R.id.camera_preview);
      onStart();
  }
  
  public void onStart(Context context, Camera camera) {
      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.setDisplayOrientation(90);
          mCamera.setPreviewDisplay(holder);
          mCamera.startPreview();
      } catch (IOException e) {
          Log.d(TAG, "Error setting camera preview: " + e.getMessage());
      }
  }
  
  public void surfaceDestroyed(SurfaceHolder holder) {
      super.onDestroy();
      // 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(TAG, "Error starting camera preview: " + e.getMessage());
      }
  }
  
  public void onPictureTaken(byte[] data, Camera camera) {
      File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
      if (pictureFile == null){
          Log.d(TAG, "Error creating media file, check storage permissions: ");
          return;
      }
      try {
          FileOutputStream fos = new FileOutputStream(pictureFile);
          fos.write(data);
          fos.close();
  
      } catch (FileNotFoundException e) {
          Log.d(TAG, "File not found: " + e.getMessage());
  
      } catch (IOException e) {
          Log.d(TAG, "Error accessing file: " + e.getMessage());
      }
  }
  
  /** Create a file Uri for saving an image or video */
  private static Uri getOutputMediaFileUri(int type){
      return Uri.fromFile(getOutputMediaFile(type));
  }
  
  /** Create a File for saving an image or video */
  private static File getOutputMediaFile(int type){
      // To be safe, you should check that the SDCard is mounted
      // using Environment.getExternalStorageState() before doing this.
  
      File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
              Environment.DIRECTORY_PICTURES), "MyCameraApp");
      // This location works best if you want the created images to be shared
      // between applications and persist after your app has been uninstalled.
  
      // Create the storage directory if it does not exist
      if (! mediaStorageDir.exists()){
          if (! mediaStorageDir.mkdirs()){
              Log.d("MyCameraApp", "failed to create directory");
              return null;
          }
      }
  
      // Create a media file name
      String timeStamp = new SimpleDateFormat("yyyyMMdd_HH:mm:ss").format(new Date());
      File mediaFile;
      if (type == MEDIA_TYPE_IMAGE){
          mediaFile = new File(mediaStorageDir.getPath() + File.separator +
                  "IMG_"+ timeStamp + ".jpg");
      } else if(type == MEDIA_TYPE_VIDEO) {
          mediaFile = new File(mediaStorageDir.getPath() + File.separator +
                  "VID_"+ timeStamp + ".mp4");
      } else {
          return null;
      }
  
      return mediaFile;
  }
  
  public void onClick() {
      // Add a listener to the Capture button
      Button captureButton = (Button) findViewById(R.id.button_capture);
      captureButton.setOnClickListener(new View.OnClickListener() {
          public void onClick(View arg0){
              // get an image from the camera
              mCamera.takePicture(null, null, mPicture);
          }
      });
  }
  
  public SurfaceHolder getHolder() {
      return holder;
  }
  
  public void setHolder(SurfaceHolder holder) {
      this.holder = holder;
  }
  }
  </code></pre>