단방향 데이터 전달
보낼 때
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name", name);
intent.putExtra("age", age);
startActivity(intent);
인텐트 객체를 만들고 전달 데이터를 key와 value로 세팅해서 보낸다.
받을 때
String name = getIntent().getStringExtra("name");
// 받아온 데이터가 없을 경우 디폴트를 0으로 설정함
int age = getIntent().getIntExtra("age", 0);
보낼 때는 타입과 상관없이 putExtra인 반면, 받을 때는 get 다음에 타입을 맞게 해야된다.
getStringExtra의 경우 받아온 데이터가 없다면 null을 반환, getIntExtra의 경우 두번째 인자로 반환한다.
양방향 데이터 전달
Back버튼을 눌렀을 때
getOnBackPressedDispatcher().addCallback(new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
// 백버튼 눌렀을 때 실행할 코드 작성
// 메인액티비티로 나이 + 10 보내고 싶다
age += 10;
Intent intent = new Intent();
intent.putExtra("age", age);
setResult(100, intent);
finish();
}
});
실행할 코드와 인텐트 객체 생성 후 put으로 데이터를 넣는다.
setResult() 함수의 첫번째 인자는 코드, 두번째 인자에는 데이터를 넣고 finish()로 현재 액티비티를 종료한다.
기존 액티비티
ActivityResultLauncher<Intent> launcher =
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult o) {
if (o.getResultCode() == 100){
int age = o.getData().getIntExtra("age", 0);
txtFuture.setText("10년 후의 나이는 : " + age);
}
}
});
onActivityResult()의 매개변수 안에 데이터가 들어온다.
위 코드와 같이 사용하면 된다.
startActivity(intent);
// 위 코드를 아래 코드로 바꿔준다.
launcher.launch(intent);
양방향 데이터 전달이기 때문에 위 코드로 수정한다.
'Android Studio' 카테고리의 다른 글
[Android Studio] 메뉴 아이콘을 벡터 이미지로 만드는 방법 (0) | 2023.12.27 |
---|---|
[Android Studio] SharedPreferences (0) | 2023.12.27 |
[Android Studio] Activity 간 화면 전환하는 방법 (1) | 2023.12.26 |
[Android Studio] Activity 생명주기(lifecycle) 함수 설명 (0) | 2023.12.26 |
[Android Studio] NullPointerException 에러 발생하는 이유 (1) | 2023.12.22 |