Intent 사용 예제
* Intent를 사용하기 위하여 Manifest.xml에 액티비티를 넣어주어야한다.
<activity android:name=".SecondActivity" />
<activity
android:name=".MainActivity"
android:exported="true">
1. 화면 전환
// MainActivity.java
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 버튼을 누르면,
// 다른 액티비티가 화면에 나타나도록 한다.
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
2. 단방향 데이터 전달
// MainActivity.java
// 버튼 클릭 시 데이터 전달
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// EditText에 입력한 데이터를 문자열로 가져온다.
String email = editEmail.getText().toString().trim();
String name = editName.getText().toString().trim();
String ageStr = editAge.getText().toString().trim();
// 나이는 숫자이므로 정수형으로 변환
int age = Integer.valueOf(ageStr).intValue();
// MainActivity에서 SecondActivity로 데이터 전달
Intent intent = new Intent(MainActivity.this, SecondActivity.class );
// 입력한 데이터를 intent로 전달
intent.putExtra("email", email);
intent.putExtra("name", name);
intent.putExtra("age", age);
startActivity(intent);
});
// SecondActivity.java
// 넘어오는 데이터가 있으면 처리해 준다.
// MainActivity에서 보낼 때 사용한 키값으로 데이터를 받는다.
String email = getIntent().getStringExtra("email");
String name = getIntent().getStringExtra("name");
int age = getIntent().getIntExtra("age", 0);
...
// 데이터를 화면에 세팅
txtEmail.setText(email);
txtName.setText(name);
editAge.setText("" +age);
3. 양방향 데이터 전달
// MainActivity.java
// MainActivity에서 데이터를 보내고,
// SecondActivity에서 보낸 데이터도 받는다.
ActivityResultLauncher<Intent> startActivityResult =
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
// result 에는 resultCode가 있다
// resultCode의 값으로, 여러가지 구분해서 사용이 가능.
if (result.getResultCode() == 0) {
int age = result.getData().getIntExtra("age", 0);
editAge.setText("" + age);
}
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 새로운 액티비티를 띄우고
// 데이터를 전달한다.
String email = editEmail.getText().toString().trim();
String name = editName.getText().toString().trim();
String ageStr = editAge.getText().toString().trim();
int age = Integer.valueOf(ageStr).intValue();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("email", email);
intent.putExtra("name", name);
intent.putExtra("age", age);
// 실행한 액티비티로부터 데이터를 받아오는 것이 있는 경우
startActivityResult.launch(intent);
}
});
}
// SecondActivity.java
// 버튼 클릭 시, 수정한 데이터 결과 전달
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 1. MainActivity 에서 수정한 나이 데이터를 가져온다.
String ageStr = editAge.getText().toString().trim();
int age = Integer.valueOf(ageStr).intValue();
// 2. 나이 데이터를 MainActivity에 전달한다.
Intent intent = new Intent(SecondActivity.this, MainActivity.class);
intent.putExtra("age", age);
// 호출한 액티비티로 결과 반환
setResult(0, intent);
// 3. 이 액티비티는 종료한다.
finish();
}
});
'안드로이드 스튜디오' 카테고리의 다른 글
[ 안드로이드 ] 이메일 형식 체크하는 코드 (0) | 2022.07.13 |
---|---|
[ 안드로이드 ] 데이터를 저장하는 SharedPreferences 사용법 (0) | 2022.07.13 |
[ 안드로이드 ] AlertDialog 사용법 (0) | 2022.07.12 |
[ 안드로이드 ] 타이머 구현, CountDownTimer 사용법 (0) | 2022.07.12 |
[ 안드로이드 ] JSON 데이터 파싱하는 방법 (0) | 2022.07.12 |