꿈꾸는 시스템 디자이너

Intent를 통한 Activity간 데이터 전달 방법 본문

Development/Android

Intent를 통한 Activity간 데이터 전달 방법

독행소년 2011. 9. 29. 15:28

main Activity는 child Activity를 생성하여 데이터를 전달하고, 데이터를 전달받은 child Activity는 데이터를 사용하고 그 결과를 main Activity(parent Activity)로 전달할 수 있다.

1. Intent 생성 및 전달 과정(in main Activity)

//Intent 생성
Intent intent = new Intent(this, ActEdit.class);
//생성한 Intent에 데이터 입력
intent.putExtra("TextIn", mText.getText().toString());
//생성한 Intent 전달(child Activity로 전환)
startActivityForResult(intent,ACT_EDIT);

2. Intent를 전달받아 사용(in child Activity)
 /**
   * Intent 받기
   * 본 Child Activity가 생성되면서 자동으로 Intent를 전달 받은 상태이므로 getIntent() 호출을 통해 전달받은
   * Intent를 이용할 수 있음
   */
Intent intent = getIntent();
String text = intent.getStringExtra("TextIn");
if(text != null)
mEdit.setText(text);

3. 결과값 리턴(in child Activity)
   switch(v.getId()){
  case R.id.btnok:
   // Intent 생성
   Intent intent = new Intent();
   // 생성한 Intent에 데이터 입력
   intent.putExtra("TextOut", mEdit.getText().toString());
   // 결과값 설정(결과 코드, 인텐트)
   this.setResult(RESULT_OK,intent);
   // 본 Activity 종료
   finish();
   break;
  case R.id.btncancel:
   // 리턴할 데이터(Intent)가 없을 경우 결과 코드만을 설정하여 반환
   this.setResult(RESULT_CANCELED);
   finish();
   break;
  }

4. 결과값 확인(in main Activity)
protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
     switch(requestCode){
     case ACT_EDIT:
      if(resultCode == RESULT_OK){
       mText.setText(data.getStringExtra("TextOut"));
      }
      break;
     }
    }

Comments