[Kotlin & Android] 호출한 엑티비티에서 값 받기(startActivityForResult 함수 deprecated)

2021. 11. 30. 23:02·개발/Kotlin & Android

개요

Activity 간 값을 전달하거나 받아야 하는 경우가 있다.

값을 전달하는 방법은 Intent에 putExtra로 값을 전달할 수 있다.

그러면 호출한 엑티비티가 종료될 때 해당 엑티비티에서 처리한 값은 어떻게 받을 수 있을까?

startActivityForResult 함수를 사용하여 값을 받을 수 있었지만 deprecated 되어 사용을 권장하지 않는다.

그러므로 registerForActivityResult 함수를 통해 콜백을 등록하는 방법을 사용해야한다.

어떤 방법인지 살펴보자.

 

콜백 등록

private lateinit var result: ActivityResultLauncher<Intent>

result = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
    if (it.resultCode == Activity.RESULT_OK){
        ...
    }
}

button.setOnClickListener {
    val mainIntent = Intent(this, SecondActivity::class.java)
    mainIntent.putExtra("testValue","Good")
    result.launch(mainIntent)
}

registerForActivityResult 함수로 콜백을 등록한 뒤 launch를 통해 다음 엑티비티를 실행시킨다.

값을 전달하고 싶다면 putExtra 함수를 이용한다.

 

 

값 전달받기

val testValue = intent.getStringExtra("testValue")
Log.d("SecondActivity", testValue!!)

val secondIntent = Intent()
secondIntent.putExtra("testValue","Wow")
setResult(RESULT_OK, secondIntent)
finish()

호출된 엑티비티에서 전달받은 값을 확인할 수 있다.

엑티비티를 종료하고 setResult 함수를 통해 현재 엑티비티를 호출한 이전 엑티비티에 값을 전달해주겠다.

 

 

엑티비티 종료 후 종료된 엑티비티에서 값 전달받기

result = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
    if (it.resultCode == Activity.RESULT_OK){
        val testValue = it.data?.getStringExtra("testValue")
        Log.d("MainActivity", testValue!!)
    }
}

getStringExtra로 값을 받아올 수 있다.

it.data 를 사용하면 setResult 에서 전달한 Intent를 불러올 수 있다.

 

마무리

호출한 엑티비티 간 데이터 값 전달방법을 알아보았다.

인턴 업무 진행 중 사용한 부분이라 정리해보았다.

'개발 > Kotlin & Android' 카테고리의 다른 글

[Kotlin & Android] 코틀린 for 문 사용법  (0) 2021.12.12
[Kotlin & Android] 코틀린 전역 변수 선언 (다른 엑티비티 변수 사용하기)  (0) 2021.12.01
[Kotlin & Android] Android 지속적인 음성인식 기능 구현 (SpeechRecognizer)  (0) 2021.10.28
[Kotlin & Android] Android SpeechRecognizer API 구현하기 (음성을 텍스트로 변환 - STT변환)  (0) 2021.10.28
[Kotlin & Android] 포그라운드 서비스 (Foreground Service)  (2) 2021.10.28
'개발/Kotlin & Android' 카테고리의 다른 글
  • [Kotlin & Android] 코틀린 for 문 사용법
  • [Kotlin & Android] 코틀린 전역 변수 선언 (다른 엑티비티 변수 사용하기)
  • [Kotlin & Android] Android 지속적인 음성인식 기능 구현 (SpeechRecognizer)
  • [Kotlin & Android] Android SpeechRecognizer API 구현하기 (음성을 텍스트로 변환 - STT변환)
재르민
재르민
개발 블로그입니다.
  • 재르민
    유잼코딩
    재르민
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • 개발 (27)
        • 자료구조 (1)
        • Git (5)
        • Python (4)
        • Java & Android (5)
        • Kotlin & Android (8)
        • Android (4)
        • Algorithm (0)
      • 잡담 (1)
      • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Git 사용법
    android speechrecognizer
    timepicker 구분선 색상
    안드로이드 음성인식
    PYTHON
    MVVM패턴
    timepicker spinner 색상
    android stt변환
    Android Studio
    github
    안드로이드
    Git
    service
    코틀린 나누기
    안드로이드 STT변환
    timepicker textColor
    안드로이드 STT변환 코틀린
    android STT
    android foreground
    Android
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
재르민
[Kotlin & Android] 호출한 엑티비티에서 값 받기(startActivityForResult 함수 deprecated)
상단으로

티스토리툴바