안드로이드에서 'startActivityForResult'를 관리하는 법


한 액티비티에서 startActivityForResult를 통해 두번째 액티비티를 불러옵니다. 두번째 액티비티에는 해당 액티비티를 종료시키는 몇몇 함수들이 들어있습니다. 일반적으론 결과값을 반환하지 않지만 한 함수만은 결과값을 반환합니다.

예를 들어, 메인 액티비티가 두번째 액티비티를 호출합니다. 이 액티비티는 기기에 카메라가 달려있는지와 같은 몇몇 장비들을 확인합니다. 만약에 장비가 존재하지 않다면 액티비티를 종료합니다. 마찬가지로, MediaRecorderMediaPlayer를 준비하는 과정에서 문제가 발생하면 액티비티를 종료합니다.

만약 카메라가 존재하고 녹화가 정상적으로 종료되면, 사용자가 완료 버튼을 눌러 녹화가 완료된 뒤, 그 결과(녹화된 비디오의 주소)를 메인 액티비티로 반환합니다.

메인 액티비티에서 결과를 확인하려면 어떻게 해야할까요?

  • 2016년 06월 04일에 작성됨

조회수 266


1 답변


좋아요
0
싫어요
채택취소하기

아래와 같이 FirstActivitySecondActivitystartActivityForResult() 함수를 이용하여 호출한다고 하죠.

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

SecondActivity에서는 FirstActivity에 반환할 데이터를 세팅하고, 만약에 반환할 값이 없다면 아무 값도 세팅하지 않으시면 됩니다.

예를 들어 : SecondAcivity에서 반환할 값이 있다면 :

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

반대로 반환할 값이 없다면 :

Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();

와 같이 구성할 수 있습니다. FirstActivity 클래스에는 onActivityResult() 함수에 아래와 같은 코드를 구성하시면 됩니다.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            //만약 반환값이 없을 경우의 코드를 여기에 작성하세요.
        }
    }
}//onActivityResult
  • 2016년 06월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close