본문 바로가기

카테고리 없음

[7]Intent (2) - 액티비티 종료시 기존인텐트로 복귀

[상황]

 MainActivity 가 SubActivity 를 열고 ,SubActivity 는 종료하면서, 데이터와 함게 MainActivity 로 돌아오게 하고싶다.

 

[지식]

 MainActivity 에서 SubActivity 를 Intent 로 start 하게 되면, 

 그두개의 엑티비티는  Stack 형태로

   MainActivity 위에 SubActivity 가 쌓이게 된다.

 

 즉, SubActivity 가 종료되면 MainActivity 가 열리게 된다.

            ┌>

   |         |       |

   | SubActivity  |

   |______________|

   | MainActivity|

   |______________|

 

[방법]

 1.MainActivity 에서는 Intent 를 만들고 실행시킬때

   startActivityForResult(Intent intent,int request_code);  를 통해서 실행 시켜야 합니다.

 

 2. MainActivty 에서 SubActivity를 열었으므로 스택의 형식을 가지고있다. 즉 , SubActivity 가 종료될때, MainActivity가 자동으로 start되므로, "종료"되는 상황에서 intent를 성정하고, 보내줄 값을 putExtra해주면 된다.

   2-1) 종료되는 경우는 뒤로가기 키를 눌렀을때라고 하고, finish();함수를 이용해서 종료시켜주면 된다.

@Override
public void onBackPressed() {
    Intent intent2 = new Intent();
    intent2.putExtra("result","OK");
    setResult(200, intent2);
    finish();
}

             

  3. SubActivity가 종료된후 MainActivity에서 데이터를 받을 것이다.

     onActivityResult 생명주기 를 이용해서 받는다.

     requestCode와 resultCode , Intent가 받아와지는것을 볼수있습니다.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

requestCode는 MainActivity에서 Main2Activity를 구별하기위해 사용하는부분

resultCode는 Main2Activity에서 어떠한 결과코드를 주었는지에 대한 부분이고

Intent data에는 Main2Activity에서 보낸 결과 데이터가 들어있는 부분입니다.