먼저 두 폼간의 데이터를 주고 받는 코드는 다음과 같다.

public class ImageViewActivity extends Activity{
 TextView m_txt;
 final static int ACT_EDIT = 0; 
 public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  m_txt = (TextView)findViewById(R.id.m_txt);
  Button m_btn = (Button)findViewById(R.id.m_btn);
  m_btn.setOnClickListener(new Button.OnClickListener(){
   public void onClick(View v){
    Intent intent = new Intent(ImageViewActivity.this,subActivity.class);
    intent.putExtra("in_txt", m_txt.getText().toString());
    startActivityForResult(intent, ACT_EDIT);
   }
  });
 } 
 
 protected void onActivityResult(int requestcode, int resultcode, Intent data){
  switch(requestcode){
   case ACT_EDIT :
    if(resultcode == RESULT_OK){
     m_txt.setText(data.getStringExtra("out_txt"));
    }
    break;
  }
 }
}

public class subActivity extends Activity{
 EditText m_txt;
 public void onCreate(Bundle savedInstanceSatate){
  super.onCreate(savedInstanceSatate);
  setContentView(R.layout.subactivity);
  m_txt = (EditText)findViewById(R.id.s_txt);
  Intent intent = new Intent();
  m_txt.setText(intent.getStringExtra("in_txt"));
  Button s_btn_ok = (Button)findViewById(R.id.s_btn_ok);
  Button s_btn_cancel = (Button)findViewById(R.id.s_btn_cancel);
  s_btn_ok.setOnClickListener(lisentner);
  s_btn_cancel.setOnClickListener(lisentner);  
 }
 Button.OnClickListener lisentner = new View.OnClickListener() {
  Intent intent;
  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   switch(v.getId()){
   case R.id.s_btn_ok :
    intent = new Intent();
    intent.putExtra("out_txt", m_txt.getText().toString());
    setResult(RESULT_OK,intent);
    finish();
    break;
   case R.id.s_btn_cancel :
    setResult(RESULT_CANCELED);
    finish();
    break;
   }
  }
 };
}

이렇게 메인과 서브로 나뉜다. 당연히 매니페스트 파일에서 액티비티는 등록 해 줘야한다.

여기에서보면 putExtra 라는 것이 있다. 이는 액티비티로 서로 값을 전달하기 위해 쓰이며

int, String, Boolean 을 이용하여 보낼 수 있다. 첫번째 이름은 중복되지 않는 키 값이라 생각하면 된다.

이 값들을 확인 하려고 할 때는 getIntExtra, getStringExtra, getBooleanExtra를 이용하여 각기 타입에 맞는 값을 불러온다.

위에 함수 중 startActivityForResult(Intent, int) 형태가 보일 것이다.

이는 해당하는 액티비티를 호출하기 위해 어떤 액티비티의 리턴인지 구분 하기 위해 이용된다.

동시에 onActivityResult(int, int, Intent) 메서드가 보일 것이다. 이는 호출된 액티비티가 종료 되면서 실행 되는 부분으로 액티비티에서 전달하는 값을 표현하고자 한다면 이 메서드 내에서 처리 하면 된다.

마지막으로 setResult 함수를 살펴보면 성공시에는 intent 내용을 전달하지만 그렇지 않을 경우는 처리 하지 않는 것으로 정의 했다. 여기서 intent라고 표현된 내용은 리턴 값 내용이다.