title: Activity not restoring data after onDestroy
body: <p>I am having problems with two ActionBarActivities.
  I have my first Activity (WorkoutEditActivity) that starts another Activity (A2) with startActivityForResult from a Fragment inside the WorkoutEditActivity.
  When I press the Back Button on the ActionBar from A2 my first Activity gets Destroyed, and saves the Data in onSaveInstanceState and then the Activity gets restarted, but I cannot figure out how to restore the Data.
  Here is the relevant Code which does not work:</p>
  
  <pre><code>    public class WorkoutEditActivity extends ActionBarActivity{
          int whatShouldBeSaved = -1;
  
          Workout workout = null;
          ViewPager viewpager;
          ViewFactory factory = new ViewFactory(getSupportFragmentManager());;
  
          @Override
          public void onCreate(Bundle savedInstanceState) {
          Log.d("onCreate", "called");
          super.onCreate(savedInstanceState);
  
          setContentView(R.layout.workout_edit_activity);
  
          viewpager = (ViewPager) findViewById(R.id.viewPager);
          viewpager.setOffscreenPageLimit(0);
          viewpager.setAdapter(factory);
  
          viewpager.setOnPageChangeListener(
                  new ViewPager.OnPageChangeListener() {
                      @Override
                      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
  
                      }
  
                      @Override
                      public void onPageSelected(int position) {
                          if (position == 0) {
                              SettingsFragment.isActivated = true;
                          } else {
                              if (SettingsFragment.isActivated) {
                                  SettingsFragment.isActivated = false;
                                  InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
                                  imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
                              }
                          }
                      }
  
                      @Override
                      public void onPageScrollStateChanged(int state) {
  
                      }
                  }
          );
  
          if (savedInstanceState != null) {
              whatShouldBeSaved = savedInstanceState.getInt("test", -1);
              if (savedInstanceState.getSerializable("workout") != null){
                  setWorkout((Workout) savedInstanceState.getSerializable("workout"));
              }
              Log.d("GOT SAVED DATA", "" + whatShouldBeSaved);
          }
          Log.d("CREATE", "created? " + workout);
          Log.d("CREATE", "created? " + whatShouldBeSaved);
          }
  
          public void setWorkout(Workout w){
          Log.d("WORKOUT", "had workout " + workout);
          workout = w;
          factory.setWorkout(workout);
          Log.d("WORKOUT", "has workout " + workout);
          }
  
          @Override
          public void onResume() {
          super.onResume();
          Log.d("RESUME", "resuming act");
  
          SettingsFragment.isActivated = true;
          //factory.setViewPager(viewpager);
  
          if (getIntent().getExtras() != null){
              if (getIntent().getExtras().containsKey("workout")){
                  Log.d("RESUME", "resume has extra");
                  setWorkout((Workout) getIntent().getSerializableExtra("workout"));
                  whatShouldBeSaved = getIntent().getIntExtra("test", -1);
              }
          } else {
              Log.d("RESUME", "extras did not contain workout2");
          }
  
          Log.d("RESUME", "created? " + workout);
          Log.d("RESUME", "created? " + whatShouldBeSaved);
          }
  
          @Override
          public void onPause(){
          super.onPause();
          Log.d("ONPAUSE", "called");
          }
  
  
          @Override
          public void onStart(){
          super.onStart();
          Log.d("START", "starting act");
          }
  
          @Override
          public void onStop(){
          Log.d("STOP", "stopping act");
          super.onStop();
          }
  
          @Override
          public void onActivityResult(int requestCode, int resultCode, Intent intent) {
          super.onActivityResult(requestCode, resultCode, intent);
          Log.d("onACTRES", "called");
          }
  
          @Override
          public void onSaveInstanceState(Bundle savedInstanceState) {
          super.onSaveInstanceState(savedInstanceState);
          Log.d("SAVEINSTANCE", "called");
          savedInstanceState.putInt("test", whatShouldBeSaved);
          }
  
          @Override
          public void onRestoreInstanceState(Bundle savedInstanceState) {
          super.onRestoreInstanceState(savedInstanceState);
  
          // Restore UI state from the savedInstanceState.
          // This bundle has also been passed to onCreate.
          Log.d("RESTOREINSTANCE", "called");
  
          whatShouldBeSaved = savedInstanceState.getInt("test", 1);
          Log.d("GOT SAVE", ""+ whatShouldBeSaved);
          }
  
          @Override
          public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState){
          super.onRestoreInstanceState(savedInstanceState, persistentState);
          Log.d("RESTOREINSTANCE2", "called");
          }
  
          @Override
          public void onDestroy(){
          super.onDestroy();
          Log.d("DESTROY", "onDestroy called");
          Log.d("DESTROY", "destroying " + workout);
          Log.d("DESTROY", "destroying " + whatShouldBeSaved);
          Log.d("DESTROY", "was destroyed");
          //first = true;
          }
      }
  </code></pre>
  
  <p>And here is an excerpt from my Log</p>
  
  <pre><code>8151-8151/localhost.fitnessoptimizer D/STOP﹕ stopping act
  01-10 13:26:45.110    8151-8151/localhost.fitnessoptimizer D/DESTROY﹕ onDestroy called
  01-10 13:26:45.110    8151-8151/localhost.fitnessoptimizer D/DESTROY﹕ destroying Luffy
  01-10 13:26:45.110    8151-8151/localhost.fitnessoptimizer D/DESTROY﹕ destroying -1
  01-10 13:26:45.110    8151-8151/localhost.fitnessoptimizer D/DESTROY﹕ was destroyed
  01-10 13:26:45.118    8151-8151/localhost.fitnessoptimizer D/onCreate﹕ called
  01-10 13:26:45.118    8151-8151/localhost.fitnessoptimizer V/Monotype﹕ SetAppTypeFace- try to flip, app = localhost.fitnessoptimizer
  01-10 13:26:45.118    8151-8151/localhost.fitnessoptimizer V/Monotype﹕ Typeface getFontPathFlipFont - systemFont = default#default
  01-10 13:26:45.126    8151-8151/localhost.fitnessoptimizer W/ViewPager﹕ Requested offscreen page limit 0 too small; defaulting to 1
  01-10 13:26:45.126    8151-8151/localhost.fitnessoptimizer D/CREATE﹕ created? null
  01-10 13:26:45.126    8151-8151/localhost.fitnessoptimizer D/CREATE﹕ created? 1
  01-10 13:26:45.127    8151-8151/localhost.fitnessoptimizer D/START﹕ starting act
  01-10 13:26:45.129    8151-8151/localhost.fitnessoptimizer D/RESUME﹕ resuming act
  01-10 13:26:45.129    8151-8151/localhost.fitnessoptimizer D/RESUME﹕ extras did not contain workout2
  01-10 13:26:45.129    8151-8151/localhost.fitnessoptimizer D/RESUME﹕ created? null
  01-10 13:26:45.129    8151-8151/localhost.fitnessoptimizer D/RESUME﹕ created? 1
  01-10 13:26:45.152    8151-8151/localhost.fitnessoptimizer D/GOT WORKOUT﹕ null
  </code></pre>
  
  <p>onRestoreInstanceState never gets called and onCreates savedInstanceState also does not contain the information.
  How can I save or restore the workout (and whatShouldBeSaved, which is actually just a debugging variable)?</p>
  
  <p>PS: I put my code in snippet js tags, because it got quite long</p>