본문 바로가기
안드로이드

[Android] 액티비티 간 데이터 주고받기 (startActivityForResult, setResult, onActivityResult)

by 책 읽는 개발자_테드 2020. 3. 9.
반응형

startActivityForResult()를 통해 액티비티를 생성하면 액티비티가 종료될 때 지정한 requestCode와 함께 onActivityResult() 메소드가 호출됩니다. 이때 종료한 액티비티를 호출한 액티비티로 결과를 반환하기 위해서 setResult()를 호출하여 resultCode와 result Intent를 지정할 수 있습니다.

 

다음은 예제입니다. 

 

액티비티 생성          

ResultActivity.class

int TEST_TYPE= 2;

Intent intent = new Intent(getApplicationContext(), RequestActivity.class);
startActivityForResult(intent,TEST_TYPE);

 

결과전달                  

RequestActivity.class

Intent intent = new Intent();
intent.putExtra("test", "수신성공");
setResult(Activity.RESULT_OK, intent);

finish();

 

결과수신                  

ResultActivity.class

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if(resultCode != RESULT_OK)
        {
            return;
        }
        switch(requestCode)
        {
            case TEST_RESULT:
            {
               //수신성공 출력
               String result = data.data.getStringExtra("test");
               System.out.println(result);
            }
        }
    }

출처

https://developer.android.com/reference/android/app/Activity?hl=ko#startActivityForResult(android.content.Intent,%20int)

https://developer.android.com/training/basics/intents/result?hl=ko#java

 

 

반응형

댓글