Just use Android's request codes with startActivityForResult(). In Activity A, call B or C with different request codes. First, define the codes:
private static final int ACTIVITY_B_REQUEST = 100;
private static final int ACTIVITY_C_REQUEST = 200;
Then start actvities.
B:
Intent intent = new Intent(this, ActivityB.class);
startActivityForResult(intent, ACTIVITY_B_REQUEST);
and C:
Intent intent = new Intent(this, ActivityC.class);
startActivityForResult(intent, ACTIVITY_C_REQUEST);
Then, still in your ActivityA, override onActivityResult() and check which request code has returned when back button was pressed:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case ACTIVITY_B_REQUEST:
//returned from ActivityB
break;
case ACTIVITY_C_REQUEST:
//returned from ActivityC
break;
default:
break;
}
}
No need to pass anything from B or C - it's already taken care of by Android.