솜은 코튼

[Android] startActivityForResult / onActivityResult 본문

Android/Java

[Android] startActivityForResult / onActivityResult

솜.코 2020. 7. 3. 17:53

startActivityForResult이란?

    : 액티비티 간의 데이터를 전달하는 방법

      그 결과를 받아 처리하는 부분이 onActivityResult이다.

 

즉, Activity1에서 startActivityForResult를 이용하여 Activity2로 화면 전환을 하고

Activity2가 finish()처리가 되면 Activity1의 onActivityResult로 데이터를 전달해준다.

 

간단하게 예제를 들어보면 아래와 같다.

 

 

1. Test1Activity -> Test2Activity로 이동

1
2
3
Intent intent = new Intent(callerObject, TestActivity1.class);
intent.putExtra("msg","test");
callerObject.startActivityForResult(intent, TEST_CODE);
cs

 

2. Test2Activity -> Test1Activity로 데이터 전달 후 finish()

1
2
3
4
Intent intent = new Intent();
intent.putExtra("result""msg value");
setResult(RESULT_OK, intent);
finish();
cs

 

3. Test1Activity에 onActivityResult를 Override 후 데이터 받기

1
2
3
4
5
6
7
8
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
 
    Log.d(LOG_TAG, "requestCode => " + requestCode);
    Log.d(LOG_TAG, "resultCode => " + resultCode);
    Log.d(LOG_TAG, "resultData => " + data.getStringExtra("result"));
}
cs

 

 

[결과값]

requestCode => TEST_CODE 값

resultCode => -1

resultData => msg value