Main.java
package com.gandus.Intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button input_BT = (Button)findViewById(R.id.inputBT);
input_BT.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(main.this, sub.class);
startActivityForResult(intent, 1);
// 호출당하는 액티비티로부터 데이터를 넘겨받기 위해 사용합니다.
//intent - 인텐트
//requestCode - 이 액티비티를 호출하는 액티비티가 여러 개가 있을 경우, 어떤 액티비티가 호출했는지를 알기 위해 사용
}
});
}
@Override
/*여기까지 정상적으로 돌아간 후, 호출당한 액티비티(InformationProc)가 finish()메소드에 의해 종료
* 되게 되면, OnActivityResult() 메소드가 호출되게 됩니다.
* 결과를 기다리고 액티비티를 호출했으니, 액티0비티가 종료되었으니 그 결과를 확인해야겠죠??
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data){
//startActivityForResult로 호출한 액티비티가 종료되었을 때 호출됩니다.
super.onActivityResult(requestCode, resultCode, data);
TextView name_view = (TextView)findViewById(R.id.main_name_input);
TextView num_view = (TextView)findViewById(R.id.main_num_input);
if(resultCode == RESULT_OK)
//requestCode가 아까 setResult()에서 액티비티가 정상 종료되었는지를 판단하는 인자값,
//RESULT_OK를 받게 됩니다. 그래서, 이걸 가지고 적절히 예외 처리를 해 줄 수 있는 거죠.
{
if(requestCode ==1 )
{
/*requestCode는 아까 startActivityForResult()를 호출할 때, InformationInput이
* 호출한 것임을 표시하기 위해 '1'으로 설정하였으므로, 여기에서 또한 그 코드를 맞춰주어야
* 제데로 결과값을 받을 수 있습니다.
* 즉, 정상적으로 액티비티가 종료되었다면 requestCode의 값은 RESULT_OK, resultCode는 1이 됩니다.
* */
name_view.setText(data.getStringExtra("data_name"));
num_view.setText(data.getStringExtra("data_num"));
}
}
}
}
Sub.java
package com.gandus.Intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class sub extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub_main);
// TODO Auto-generated method stub
Button commit = (Button)findViewById(R.id.Commit);
commit.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = getIntent(); // 이 액티비티를 시작하게한 인텐트 호출
EditText name_input = (EditText)findViewById(R.id.sub_edit_name);
EditText num_input = (EditText)findViewById(R.id.sub_edit_num);
intent.putExtra("data_name", name_input.getText().toString());
// putExtra(String name, _value) -> name에 해당하는 곳에 값을 가져온다.
intent.putExtra("data_num", num_input.getText().toString());
setResult(RESULT_OK, intent); // 추가 정보를 넣은 후 다시 인테트를 반환
/*RESULT_OK로 액티비티가 정상적으로 끝났음을 전달하게 됩니다.
* RESULT_OK를 반환하지 않고 중간에 비정상적으로 종료되었다면
* 저 코드를 반환받지 못하므로 뭔가 문제가 있구나 알게 되겠죠? 제데로 종료가 된다면,
* 아까 우리가 추가로 입력한 데이터를 담은 인텐트도 함께 반환하게 됩니다
*/
finish(); // 액티비티 종료
}
});
}
}