title: startActivityForResult returning null when back navigation to activity sending result returns
body: <p>I have 3 activities that start in a sequence.With the first activity needing a result from the last activity.</p>
  
  <p>I have it so that if Activity B is started for result (By activity A) then Activity B starts activity C for result. Then once the result is captured at activity C it is finished which calls Activity B's onActivityResult which sets the result and finishes and Activity A's onActivityResult gets the final result.</p>
  
  <p>Activity A starts Activity B for a result which Activity C contains thus the sequence is like so</p>
  
  <p>A->B->C (get result) C->B->A (result retrieved)</p>
  
  <p>This works just fine if everything happens in sequence. However, If I navigate to activity C then press the toolbars back arrow and which leads me to activity B then navigate back to activity C and select the result. The result returned to activity A is null.</p>
  
  <p>A->B->C->B->C(get result)  C->B->A (result == null)</p>
  
  <p><strong>Activity A</strong></p>
  
  <pre><code>public class AlertCreationActivity extends AppCombatActivity {
  
     // OnCreate methods left out to shorten code
  
      @OnClick(R.id.locationButton)
      public void locationButtonClicked() {
          Intent intent = new Intent(this, StateActivity.class);
          intent.putExtra(StateActivity.IS_STARTED_FOR_RESULT, StateActivity.STARTED_FOR_RESULT);
          startActivityForResult(intent, ALERT_CREATION_REQUEST_CODE);
      }
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
  
          if (requestCode == ALERT_CREATION_REQUEST_CODE &amp;&amp; resultCode == RESULT_OK) {
              String title = data.getStringExtra(ALERT_CREATION_REQUEST_DATA);
              if ( ! title.isEmpty()) {
                  mLocationButton.setVisibility(View.INVISIBLE);
                  mLocationTextView.setText(title);
                  mLocationTextView.setVisibility(View.VISIBLE);
              }
          }
      }
  }
  </code></pre>
  
  <p><strong>Activity B</strong></p>
  
  <pre><code>public class StateActivity extends AppCompatActivity {
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
           super.onActivityResult(requestCode, resultCode, data);
          if (requestCode == AlertCreationActivity.ALERT_CREATION_REQUEST_CODE) {
              Intent intent = new Intent();
              intent.putExtra(AlertCreationActivity.ALERT_CREATION_REQUEST_DATA, data.getStringExtra(AlertCreationActivity.ALERT_CREATION_REQUEST_DATA));
              setResult(RESULT_OK, intent);
              finish();
          }
      }
  }
  </code></pre>
  
  <p><strong>Activity B's adapter is where the next intent happens</strong></p>
  
  <pre><code>public class StateAdapter extends RecyclerView.Adapter&lt;StateAdapter.StateViewHolder&gt;  {
  
      // Other Adapter methods not shown
  
      public class StateViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
  
          // Other View Holder methods not shown
  
          @Override
          public void onClick(View v) {
              State selectedState = getStateBy(mLocationLabel.getText().toString());
  
              // Save state ID
              LocationStorage storage = new LocationStorage(mActivity);
              storage.setSelectedStateId(selectedState.getId());
              storage.setSelectedStateName(selectedState.getName());
  
              Intent intent = new Intent(mActivity, SpotActivity.class);
              mActivity.startActivityForResult(intent, AlertCreationActivity.ALERT_CREATION_REQUEST_CODE);               
  
          }
      }
  }
  </code></pre>
  
  <p><strong>Activity C</strong></p>
  
  <pre><code>public class SpotActivity extends AppCompatActivity {
       @Override
       protected void onCreate(Bundle savedInstanceState) {
  
           // Initialize actionbar and recyclerview adapter
  
           // a click on a recyclerview's list item triggers this method
           adapter.setSurfSpotSelectedListener(new SurfSpotSelectedListener() {
              @Override
              public void onSpotSelected(String spotName) {               
                  Intent intent = new Intent();
                  intent.putExtra(AlertCreationActivity.ALERT_CREATION_REQUEST_DATA, spotName);
                  setResult(RESULT_OK, intent);
                  finish();
              }
          });
       }
  }
  </code></pre>