Search code examples
androidonactivityresult

Handle data from several activities in one onActivityResult()?


I wonder if it's possible to handle data from e.g. activity 2 and activity 3 in activity 1 that have one onActivityResult(), or do I need to have one method for each activity that return data?

Activity 1 is the main activity for the application.

Activity 1:

// Handle return value from activity
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {
        String imageId = data.getExtras().getString("imageId");

        // Do something if data return from activity 2 ??

        // Do something if data return from activity 3 ??
    }
}

Activity 2

Intent intent = new Intent();
intent.putExtra("imageId", imagePath);
setResult(RESULT_OK, intent); 
finish();

Activity 3

Intent intent = new Intent();
intent.putExtra("contactId", data);
setResult(RESULT_OK, intent);
finish();

Solution

  • set requestCode in your startActivityForResult for activity 1:

    calling activity 2

    Intent intent = new Intent(this, Activity2.class);
    startActivityForResult(intent,10); 
    

    calling activity 3

    Intent intent = new Intent(this, Activity3.class);
    startActivityForResult(intent,11); 
    

    Now when you come to onActivityResult check that requestCode

    like:

     public void onActivityResult(int requestCode, int resultCode, Intent data)
     {
    
          super.onActivityResult(requestCode, resultCode, data);
    
           switch (requestCode) {
    
              case (10): 
              {
                // do this if request code is 10.
              }
              break;
    
              case (11):
              {
                // do this if request code is 11.
              }
              break;
      }