728x90
액티비티 간 단방향 데이터 전달
다른 액티비티에게 데이터 전달하는 소스 코드
1. Intent 객체 생성
- 객체 생성시 지금의 액티비티(this)와 대상이 될 액티비티(class)를 설정
2. putExtra("key", value) : 파라미터에 키와 밸류 데이터 입력
intent.putExtra("name",name);
intent.putExtra("age",age);
다른 액티비티로부터 데이터를 전달 받는 소스 코드
1. getIntent().getStringExtra("key") : 메소드에 키 데이터 입력
- 주의 : 전달 받는 데이터타입에 맞춰야 함
- 문자열이 아닌 다른 데이터타입은 defaultValue를 설정해줘야한다.
String name = getIntent().getStringExtra("name");
int age = getIntent().getIntExtra("age",0);
txtName.setText(name);
age = age + 10;
// setText에는 무조건 문자열이 들어가야하므로 가장 쉬운 방법인 따옴표를 이용 => age+""
txtAge.setText(age+"");
위 그림처럼 intent를 통해서 데이터를 전달을 해줘야한다.
실행 결과 확인
액티비티 간 양방향 데이터 전달
데이터를 ActivityResultLauncher를 사용하여 전달받는 방법
다른 액티비티로 이동하고 이동된 액티비티가 종료 될 때 데이터 전달받는 소스 코드
3. onActivityResult 메소드 오버라이드
- startActivityResult.launch(Intent)에서 전달 받은 값(키로 호출)과 리퀘스트 코드 접근 하는 메소드
- 확인 : startActivityResult는 ActivityResultLauncher의 객체를 임의로 지정한 이름
- 주의 : onCreate() 메소드가 아닌 다른 영역에서 오버라이드 해야 함
- 데이터 전달(반환값)이 성공적이면 리퀘스트 코드는 0
- 전달 받은 값은 리퀘스트 코드 0으로 구분하여 코드 작성 (조건문 이용)
// 내가 실행한 액티비티로부터, 데이터를 다시 받아오는 경우에 작성하는 코드
ActivityResultLauncher<Intent> launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if(result.getResultCode() == 0){
int age10 = result.getData().getIntExtra("age10",0);
txtAge.setText(""+age10);
}
}
});
// 양방향 데이터 전달할 때는
launcher.launch(intent);
Back(뒤로가기) 버튼을 눌렀을 때 이벤트 처리 방법
@Override
public void onBackPressed() {
// 10년 후의 나이를 MainActivity로 전달!!!
Intent intent = new Intent();
intent.putExtra("age10",age);
// 돌려줄 때는 startActivity가 아니라, setResult 함수를 이용한다.
setResult(0,intent);
Log.i("LifeCycleApp","두번째 액티비티의 onBackPressed 함수 실행");
// 프레임워크가 할 일을 하라는 코드.
super.onBackPressed();
실행 결과
'Android Studio' 카테고리의 다른 글
Android - SQLite3 DB 사용법 (1) | 2023.01.31 |
---|---|
Android - SharedPreferences 공유 저장소에 데이터 저장하기 (0) | 2023.01.31 |
Android - Activity Life Cycle 주요 함수와 화면 전환 방법 (0) | 2023.01.30 |
Android - CountDownTimer (0) | 2023.01.27 |
Android - AlertDialog 사용법 (0) | 2023.01.27 |