dada·2023년 2월 25일
0
  • ActivityResultLauncher 인스턴스를 만드는 법

  • registerForActivityResult() 는 인자로

    • ActivityResultContract: 결과를 생성하는 데 필요한 입력 유형과 결과의 출력 유형을 정의합니다. 이 API는 사진 촬영, 권한 요청 등과 같은 기본 인텐트 작업의 기본 계약을 제공합니다. 자체 맞춤 계약을 만들 수도 있습니다.
      - 계약 종류
      - public final class ActivityResultContracts.StartActivityForResult extends ActivityResultContract
      An ActivityResultContract that doesn't do any type conversion, taking raw Intent as an input and ActivityResult as an output.
    • ActivityResultCallback: ActivityResultContract에 정의된 출력 유형의 객체를 가져오는 onActivityResult() 메서드가 포함된 단일 메서드 인터페이스입니다.
      • 단일 인터페이스 구현체를 넘기는 거니까 onActivityResult() 오버라이딩해서 SAM변환으로 콜백 등록해줌
      • raw한 Intent를 가져온다면 Intent객체를 가져오는게 되겠지
      • 보내는 쪽에서 setResult(Activity.RESULT_OK, intent) 했으니까

다른 계약을 사용하거나 별개의 콜백을 원하는 여러 활동 결과 호출이 있다면 registerForActivityResult()를 여러 번 호출하여 여러 개의 ActivityResultLauncher 인스턴스를 등록할 수 있습니다. 진행 중인 결과가 올바른 콜백에 전달되도록 프래그먼트나 활동을 만들 때마다 registerForActivityResult()를 항상 동일한 순서로 호출해야 합니다.

profile
'왜?'라는 물음을 해결하며 마지막 개념까지 공부합니다✍

0개의 댓글

관련 채용 정보