startActivityForResult()와 onActivityResult()가 Deprecated 되면서

안드로이드 문서를 살펴봤다!
https://developer.android.com/training/basics/intents/result

Activity Result API를 사용을 적극 권장하고 있었다!

기존에 사용하던 방식은

이런 방식으로 사용했지만 바뀐 내용을 한번 살펴보자!

A -> B로 데이터를 보내고 싶다면 A액티비티에서 콜백을 등록해줘야한다!

registerForActivityResult()를 사용하여 파라미터로 전달되는 ActivityResultCallback 을 사용하여 기존 onActivityResult()와 동일한 결과를 처리한다!

ActivityResultContract : 입력된 타입으로 호출하고, 출력(콜백)을 생성할 수 있다.
ActivityResultContract의 각각의 타입들은 다양하다!

영어만 읽어보면 어떤기능들을 할 수있는지 대충 짐작은간다! 아마 사진찍기나, 갤러리에서 사진고르기는 해당 주제로 다시 포스팅할 예정이다.

오늘은 ActivityResultContract.StartActivityForResult()에 대한 포스팅이다.

타입을 StartActivityForResult()설정해줘서 콜백은 StartActivityForResult() 해당하는 코드를 작성해주면 된다. 즉, B액티비티에서 받아온 값이다! (람다)

그 이후

.launch를 실행시켜주면 된다. launcher는 ActivityResultContract를 실행시켜주는 메소드이다.

getResult의 타입은 ActivityResultLauncher 타입인데,

ActivityResultLauncher는 ActivityResultContract 실행 프로세스를 시작하기 위해 미리 준비된 호출을 위한 실행기이다! 현재 ActivityResultContract는 StartActivityForResult여서 StartActivityForResult를 실행시킨다!

데이터바인딩을 addChild()를 버튼을 클릭했을 때 호출하게 구현해놨고 버튼을 누르면
B액티비티로 이동하게된다.

위 코드는 B액티비티의 코드이며, 버튼 클릭시 호출되게 구현했다! setResult로 결과를 수신후에 액티비티를 종료시키면 A액티비티에서 작성한 콜백 부분이 호출하게 된다!

profile
이해는 뇌를 흥분시킨다

0개의 댓글