먼저 A에서 startActivityForResult 호출하실 때 다른 requestCoe를 사용하세요.
// startActivityForResult의 메소드 모양
public void startActivityForResult (Intent intent,
int requestCode)
//ActivityA
private static final String REQUEST_PLAY_MUSIC = 100; //임의의 값
private static final String REQUEST_PICK_AUDIO_FILE = 200; //임의의 값
// ActivityB 호출
startActivityForResult(intentPlayMusic, REQUEST_PLAY_MUSIC);
// ActivityC 호출
startActivityForResult(intentPickAudioFile, REQUEST_PLAY_MUSIC);
B와 C에서 결과값을 넘길 때, Intent를 통해 결과값을 원하시는 대로 세팅해 주시면 됩니다.
// B와 C에서 A에 결과값을 전달할 때 호출할 함수
public final void setResult ( Intent data)
// ActivityB
setResult(RESULT_OK);
finish();
// ActivityC
Intent intent = new Intent();
intent.putExtra("fiilename", selectedAudioFileName);
setResult(RESULT_OK, );
finish();
ActivityA에서는 startActivityForResult할 때 사용했던 requestCode와 setResult를 통해 세팅했던 데이터를 전달받게 됩니다.
protected void onActivityResult (int requestCode,
int resultCode,
<a data-cke-saved-href="https://developer.android.com/reference/android/content/Intent" href="https://developer.android.com/reference/android/content/Intent">Intent</a> data) {
if (resultCode != RESULT_OK) return;
if (requestCode == REQUEST_PLAY_MUSIC) {
// doSomething();
return;
}
if (requestCode == REQUEST_PICK_AUDIO_FILE) {
playAudioFile(data.getExtra("filename"));
return;
}
}
이런 식으로 데이터만 원하는 데이터로 잘 전달하시고 받는 쪽에서 넘어온 데이터가 원하는 데이터인지 체크하시면 됩니다.