title: Android confused on using camera to take photo in app and send extra Intent
body: <p>I am trying to implement a feature if someone takes a picture it replaces the picture on the final page source image with theirs. my demo program worked fine, but I am having trouble with the actual program I want to implement the feature in. I am following this tutorial. I believe with my actual classes and constructors start complicating more then I understand right now. <a href="https://developer.android.com/training/camera/photobasics.html" rel="nofollow noreferrer">https://developer.android.com/training/camera/photobasics.html</a>.</p>
  
  <pre><code>package com.example.samue.interactivefamilystory.main.ui;
  
  import android.app.Activity; 
  import android.content.Intent; 
  import android.content.res.Resources; 
  import android.graphics.Bitmap; 
  import android.media.Image; 
  import android.provider.MediaStore; 
  import android.support.v7.app.AppCompatActivity; 
  import android.os.Bundle;
  import android.view.View; 
  import android.widget.Button; 
  import android.widget.EditText; 
  import android.widget.ImageButton;
  
  import com.example.samue.interactivefamilystory.R;
  
  public class MainActivity extends AppCompatActivity {
  
      private EditText nameField;
      private Button startButton;
      private ImageButton cameraButton;
  
      private static final int REQUEST_IMAGE_CAPTURE = 1;
      Bitmap thumbnailImage = null;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          nameField = (EditText) findViewById(R.id.edit_name_text);
          startButton = (Button) findViewById(R.id.start_button);
  
          //Set button click listener and set name to use for resource.
  
          startButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                 String name = nameField.getText().toString();
                 startStory(name);
              }
          });
  
          cameraButton = (ImageButton) findViewById(R.id.camera_button);
          cameraButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  takePictureIntent();
  
              }
          });
  
      }
      //start the story intent
      public void startStory(String name){
          Intent intent = new Intent(this, StoryActivity.class);
          intent.putExtra("name", name);
          intent.putExtra("picture",thumbnailImage);
          startActivity(intent);
  
      }
      //take picture intent method.
      public void takePictureIntent(){
          Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
          if(takePicture.resolveActivity(getPackageManager()) != null) {
              startActivityForResult(takePicture, REQUEST_IMAGE_CAPTURE);
          }
      }
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          if (requestCode == REQUEST_IMAGE_CAPTURE &amp;&amp; resultCode== RESULT_OK) {
              Bundle extras = data.getExtras();
              thumbnailImage = (Bitmap) extras.get("data");
          }
      } 
  }
  </code></pre>
  
  <p>StoryActivity</p>
  
  <pre><code>package com.example.samue.interactivefamilystory.main.ui;
  
  import android.content.Intent;
  import android.graphics.Bitmap;
  import android.graphics.drawable.Drawable;
  import android.support.v4.content.ContextCompat;
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.widget.Button;
  import android.widget.ImageView;
  import android.widget.TextView;
  
  import com.example.samue.interactivefamilystory.R;
  import com.example.samue.interactivefamilystory.main.model.Choice;
  import com.example.samue.interactivefamilystory.main.model.Page;
  import com.example.samue.interactivefamilystory.main.model.Story;
  
  
  public class StoryActivity extends AppCompatActivity {
  
      private String name;
      private Bitmap usersPicture = null;
  
      private Story story;
      private ImageView storyImageView;
      private TextView storyTextView;
      private Button choice1button;
      private Button choice2button;
  
      public static final String TAG = StoryActivity.class.getSimpleName();
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_story);
  
          storyImageView = (ImageView) findViewById(R.id.story_image_view);
          storyTextView = (TextView) findViewById(R.id.story_text_view);
          choice1button = (Button) findViewById(R.id.next_page_button1);
          choice2button = (Button) findViewById(R.id.next_page_button2);
  
  
  
          Intent intent = getIntent();
          name = intent.getStringExtra("name");
          if (name == null || name.isEmpty()){
              name = "Baby";
          }
          Log.d(TAG,name);
  
          usersPicture = intent.getExtras().getParcelable("picture");
  
          story = new Story();
          loadPage(0);
  
  
      }
  
      private void loadPage(int pageNumber) {
          final Page page = story.getPage(pageNumber);
          Drawable image = ContextCompat.getDrawable(this, page.getImageID());
          storyImageView.setImageDrawable(image);
  
          //get string from page then set the format special characters to name taken from edit text.
          String pageText = getString(page.getTextID());
          pageText = String.format(pageText, name);
          storyTextView.setText(pageText);
  
  
          if (page.isFinalPage()){
              if(usersPicture == null){
              storyImageView.setImageResource(R.drawable.baby);
              } else {
  
                  storyImageView.setImageBitmap(usersPicture);
              }
              choice1button.setVisibility(View.INVISIBLE);
              choice2button.setText("I see...");
  
          }else {
  
              loadButtons(page);
          }
  
      }
  
      private void loadButtons(final Page page) {
          String buttonText = getString(page.getChoice1().getmTextID());
          buttonText = String.format(buttonText,name);
          choice1button.setText(buttonText);
          choice1button.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  int nextPage = page.getChoice1().getmNextPage();
                  loadPage(nextPage);
              }
          });
          String buttonText2 = getString(page.getChoice2().getmTextID());
          buttonText2 = String.format(buttonText2, name);
          choice2button.setText(buttonText2);
          choice2button.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  int nextPage = page.getChoice2().getmNextPage();
                  loadPage(nextPage);
              }
  
          });
      }
  }
  </code></pre>
  
  <p>More information that hopefully help.</p>
  
  <p>Hmm.. let me start over I am trying to implement a feature if someone takes a picture it replaces the picture on the final page src image with theirs.
  this statement with my knowledge should set the picture, but it isn't </p>
  
  <pre><code>if (page.isFinalPage()){
      if(usersPicture == null){
      storyImageView.setImageResource(R.drawable.baby);
      } else {
  
          storyImageView.setImageBitmap(usersPicture);
      }
      choice1button.setVisibility(View.INVISIBLE);
      choice2button.setText("I see...");
  </code></pre>
  
  <p>my page class </p>
  
  <pre><code>package com.example.samue.interactivefamilystory.main.model;
  
  import android.widget.Button;
  
  /**
   * Created by samue on 3/22/2018.
   */
  
  public class Page {
  
      private int imageID;
      private int textID;
  
      private Choice choice1;
      private Choice choice2;
  
      private boolean isFinalPage = false;
  
  
      public Page(int imageID, int textID, Choice choice1, Choice choice2){
  
          this.imageID = imageID;
          this.textID = textID;
          this.choice1 = choice1;
          this.choice2 = choice2;
  
      }
  
      public Page(int imageID, int textID){
          this.imageID = imageID;
          this.textID = textID;
          isFinalPage = true;
      }
  
      public Page(int textID){
          this.textID = textID;
          isFinalPage = true;
      }
  
  
      public boolean isFinalPage() {
          return isFinalPage;
      }
  
      public void setFinalPage(boolean finalPage){
          isFinalPage = finalPage;
      }
  
      public int getImageID() {
          return imageID;
      }
  
      public void setImageID(int imageID) {
          this.imageID = imageID;
      }
  
      public int getTextID() {
          return textID;
      }
  
      public void setTextID(int textID) {
          this.textID = textID;
      }
  
      public Choice getChoice1() {
          return choice1;
      }
  
      public void setChoice1(Choice choice1) {
          this.choice1 = choice1;
      }
  
      public Choice getChoice2() {
          return choice2;
      }
  
      public void setChoice2(Choice choice2) {
          this.choice2 = choice2;
      }
  }
  </code></pre>
  
  <p>and page that is causing me trouble </p>
  
  <pre><code> pages[6] = new Page(R.drawable.baby, R.string.player);
  </code></pre>
  
  <p>I hope that gives more context to what I am saying sorry for all the messages</p>