왕현성
코딩발자취
왕현성
전체 방문자
오늘
어제
  • 코딩 (277)
    • Python (71)
    • Java (16)
    • MySQL (34)
    • 인공지능 (48)
      • 머신러닝 (16)
      • 딥러닝 (32)
    • 영상처리 (4)
    • Rest API (21)
    • Android Studio (25)
    • streamlit (13)
    • DevOps (22)
      • AWS (9)
      • PuTTY (5)
      • Git (4)
      • Serverless (2)
      • Docker (2)
    • IT 기술 용어 (6)
    • 디버깅 ( 오류 해결 과정 ) (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • unsupervised
  • TensorFlow
  • 비지도학습
  • matplotlib
  • labelme
  • get_long_description
  • 딥러닝
  • 영상처리역사
  • encoding='utf-8'
  • ComputerVision
  • alibidetect
  • labelme UnocodeDecodeError
  • maskimage
  • OpenCV
  • PIL
  • tune()
  • pip install labelme
  • 의료이미징
  • numpy
  • UnboundLocalError
  • 영상처리
  • 기상탐사
  • ckpt_file
  • 컴퓨터비전
  • alibi-detection
  • yolov8
  • pytorch
  • PYTHON
  • imageprocessing
  • 영상기술

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
왕현성

코딩발자취

Android - Activity 간의 데이터 전달 방법 (단방향/양방향) / Back(뒤로가기) 이벤트 처리 방법
Android Studio

Android - Activity 간의 데이터 전달 방법 (단방향/양방향) / Back(뒤로가기) 이벤트 처리 방법

2023. 1. 30. 15:06
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
    'Android Studio' 카테고리의 다른 글
    • Android - SQLite3 DB 사용법
    • Android - SharedPreferences 공유 저장소에 데이터 저장하기
    • Android - Activity Life Cycle 주요 함수와 화면 전환 방법
    • Android - CountDownTimer
    왕현성
    왕현성
    AI 머신비전 학습일지

    티스토리툴바