본문 바로가기
안드로이드

안드로이드 - 액티비티 간의 양방향 데이터 전달방법(Back버튼 눌렀을 때)

by leo104 2023. 1. 30.
728x90

액티비티간 데이터를 양방향으로 전달하는 방법

기기의 물리 Back버튼을 눌렀을때 두번째 액티비티의 데이터를 첫번째 액티비티로 전달하는 방법

 

두번째 액티비티

onBackPressed() 를 이용한다.

 

1. 먼저 Intent를 만들어준다.

Intent intent = new Intent();

2. intent에 데이터를 넣어준다.

intent.putExtra("age10",age);

3. 돌려줄 때는 startActivity가 아니라 setResult 함수를 이용한다. (처리코드 , 보낼 데이터 )

setResult(0,intent );

 

전체 코드

@Override
public void onBackPressed() {
    Log.i("LifeCycleApp", "두번째 액티비티 onBackPressed 함수 실행");

    // 10년 후의 나이를 메인액티비티로 전달!!!
    Intent intent = new Intent();
    intent.putExtra("age10",age);
    // 돌려줄때는 startActivity 가 아니라, setResult 함수 이용
    setResult(0,intent );

    // 프레임워크가 할일 하라는 코드.
    super.onBackPressed();

}

 

첫번째 액티비티

1. Intent를 받아오는 ActivityResultLauncger 함수를 멤버변수에 저장한다.

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);

        }
    }
});

2. 오버라이드 한 함수 안에 if문을 사용해서 처리코드가 0이면 데이터를 가져오는 코드 작성 getIntExtra(데이터의 key , 처리코드)

 

3. 그 후에 텍스트뷰에 띄우는 함수 사용하기

728x90