개발학습일지

[Android Studio] 액티비티 백버튼 누를 때 데이터 전달 방법 본문

카테고리 없음

[Android Studio] 액티비티 백버튼 누를 때 데이터 전달 방법

처카푸 2024. 6. 7. 13:01

액티비티 백버튼 누를 때 데이터 전달 방법

- 세컨드 액티비티에서 데이터를 가지고 메인 액티비티로 전달하여 실행

 

1. 두 번째 화면 액티비티에 백버튼 눌렀을 때, 동작하는 코드를 작성한다.

- onCreate 함수 안에 작성한다.

- setResult 함수 안에 작성하는 코드번호를 정해서 보내주고,

  정해진 코드번호를 이용해서 데이터를 받을 수 있다.

  -1, 0, 1은 이미 정해진 코드번호이다.

        // 백 버튼 눌렀을떄 동작하는 코드 작성
        getOnBackPressedDispatcher().addCallback(new OnBackPressedCallback(true){
            @Override
            public void handleOnBackPressed() {
                // intent 객체 생성해서 원하는 데이터를 setResult 코드를 정해서 보낸준다.
                Intent intent = new Intent();
                intent.putExtra("age", age);
                setResult(1000, intent);
                finish();
            }
        });

 

 

2. 첫 번째 화면에서 데이터를 받아준다.

- 멤버 변수로 만들어서 사용한다.

- ActivityResultLauncher <> 사용

    ActivityResultLauncher<Intent> launcher =
            registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
                    new ActivityResultCallback<ActivityResult>() {
                        @Override
                        public void onActivityResult(ActivityResult o) {
                            // 내가 실행한 엑티비티로 부터, 데이터를 받아오는 부분
                            if (o.getResultCode() == 1000){
                                Log.i("LIFE MAIN","실행");
                                int age = o.getData().getIntExtra("age", 0);
                                txtAge.setText("10년 후 나이는 " + age + " 살");
                            }
                        }
                    });

 

- 버튼을 클릭하면 나오는 코드에 위에 변수를 작성해서 실행시켜 준다.

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String name = editName.getText().toString().trim();
                String strAge = editAge.getText().toString().trim();

                int age = Integer.parseInt(strAge);

                Intent intent = new Intent(MainActivity.this, SecondActivity.class);

                intent.putExtra("name",name);
                intent.putExtra("age",age);
                // launcher 실행하는 코드
                launcher.launch(intent);
            }
        });

 


* 포스팅. 액티비티 간의 단방향 데이터 전달 방법

https://msdev-st.tistory.com/177

 

[Android Studio] 액티비티 간의 단방향 데이터 전달 방법

액티비티 간의 단방향 데이터 전달 방법- 메인 액티비티에서 세컨드 액티비티 실행 액티비티끼리 연결하기 위해서는, LifeCycle의 동작 방식을 알고 있어야 잘 작동되는 코드를 짤 수 있다. 첫 번

msdev-st.tistory.com

 

* 포스팅. 액티비티 간의 양방향 데이터 전달 방법

https://msdev-st.tistory.com/178

 

[Android Studio] 액티비티 간의 양방향 데이터 전달 방법

액티비티 간의 양방향 데이터 전달 방법- 메인 액티비티에서 데이터를 가지고 세컨드 액티비티로 전달하여 실행 1. 첫 번째 액티비티에 다른 액티비티를 실행시키는 코드를 작성한다.- Intent 클

msdev-st.tistory.com

 

* LifeCycle

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko

 

활동 수명 주기  |  Android Developers

활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페

developer.android.com