📝Activity 데이터 전달
단방향 데이터 전달하기
인텐트를 만들어 화면 띄우는 코드를 셋팅했다면
그 밑에 새로운 액티비티에 전달할 데이터를 셋팅한다(key와 value로 데이터 셋팅)
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name", name);
intent.putExtra("age", age);
startActivity(intent);
위처럼 전달하는 코드를 작성하면 새로운 액티비티(SecondActivity)는 그 데이터를 받아야하는 코드를 작성한다
이 액티비티를 실행한 액티비티로부터 데이터를 받아오는 코드
(인텐트를 가져오고 그 인텐트에 들어있는 키값으로 데이터를 받아온다)
String name = getIntent().getStringExtra("name");
// 받아온 데이터가 없을 경우 디폴트를 0으로 설정함
int age = getIntent().getIntExtra("age", 0);
액티비티간 양방향 데이터 전달하기
SecondActivity에서 Back 버튼을 눌렀을때 이벤트를 처리하는 코드를 먼저 작성했다
※ Back 버튼은 onCreate 밖에서 onBackPressed를 오버라이드
@Override
public void onBackPressed() {
// 인텐트 생성
Intent intent = new Intent();
intent.putExtra("age10", age);
// 돌려줄때는 setResult 함수 이용
setResult(0, intent);
// 기존에 있던 super코드는 아래에 위치시켜준다
super.onBackPressed();
}
기존 액티비티로 돌아와 멤버 변수 밑에 실행한 액티비티로부터 데이터를 다시 받아올 launcher 코드 작성하고
ActivityResultLauncher<Intent> launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
// 위 코드에서 0으로 설정했기때문에 0으로 입력한 것(보통은 상수처리한 변수 사용)
if(result.getResultCode() == 0){
int age10 = result.getData().getIntExtra("age10", 0);
txtAge.setText(""+age10);
}
}
});
이제 단방향 데이터 전달이 아니고 양방향 데이터 전달이기 때문에 startActivity(intent); 코드를 삭제하고
위에서 만든 launcher를 사용한다 launcher.launch(intent); 로 바꿔준다
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name", name);
intent.putExtra("age", age);
launcher.launch(intent);
'Android Studio' 카테고리의 다른 글
[Android Studio] SQLite(에스큐엘라이트) 데이터베이스 사용하기 (0) | 2023.01.31 |
---|---|
[Android Studio] Shared Preferences (0) | 2023.01.31 |
[Android Studio] Activity간의 화면 전환하기 (0) | 2023.01.30 |
[Android Studio] Activity 라이프 사이클 (0) | 2023.01.30 |
[Android Studio] CountDownTimer(카운트다운 타이머) 사용하기 (0) | 2023.01.27 |
댓글