Activity 또는 Fragment에 있을 때, Activity Result API에서 제공하는 registerForActivityResult() API를 통해서 결과 콜백을 등록할 수 있다.
여기서 registerForActivityResult()는 ActivityResultContract와 ActivityResultCallback을 가져와서 다른 activity를 실행하는 데 사용할 ActivityResultLauncher를 반환한다.
ActivityResultContract는 우리가 결과를 생성하는 데 필요한 입력의 형태와 결과를 출력하는 형태를 정의하고 우리가 intent를 사용하는 작업의 기본적인 계약을 제공한다.
registerForActivityResult 메소드를 활용해서 ActivityLauncher를 만든다.
Parameter는 ActivityResultContract, ActivityResultCallback이 필요하다
ActivityResultContract는 startActivityForResult 등 다양한 계약 객체들이 있다. 구글링 해서 원하는 방식으로 사용하도록! 이라 말하지만 나도 잘 모른다. 나도 구글링했다고....
ActivityResultCallback 람다를 사용하는 경우, ActivityResult 객체가 람다의 파라미터로 전달된다.
intent와 result Code를 사용해서 원하는 데이터를 가져오면 된다.
안드로이드에서 액티비티 간에 결과를 주고받을 때 사용하는 resultCode는 정수 값을 가진다. 성공과 실패를 구분하기 위해 약속된 값을 사용한다.
RESULT_OK: 액티비티가 성공적으로 완료되었음을 나타내는 값으로, 정수 값으로는 보통 -1로 사용된다. 이 코드는 액티비티의 작업이 성공적으로 마무리되었음을 나타낸다.
현재 액티비티에서 "ID"와 "Pass" 데이터를 Intent에 담아서 설정하고 RESULT_OK 결과 코드와 함께 액티비티를 종료하여 이전 액티비티로 데이터를 전달하는 동작을 수행한다. 이후에 호출한 액티비티에서 onActivityResult를 사용하여 데이터를 가져올 수 있다.
onActivityResult : 안드로이드 액티비티(Activity)에서 다른 액티비티를 호출하고, 호출된 액티비티로부터 결과를 받아 처리하는 콜백 메서드