오늘은 Jetpack Compose 에서 Acitivity Result를 가져오는 방법에 대해서 정리해 보도록 하겠습니다.
1. rememberLauncherForActivityResult
이전에는 Activity에서 다른 Activity로부터 결과값을 가져올 때 registerForActivityResult를 사용하였습니다.
이와 관련해서는 아래 글을 참조해 주시면 됩니다.
>> registerForActivityResult 구현방법 정리 # 예전 onActivityResult
Jetpack Compose에서 갤러리에서 이미지등을 가져오려면 registerForActivityResult가 아니라,
rememberLauncherForActivityResult API를 사용해 주어야 합니다.
이 API는 아래와 같이 첫번째 인자로 ActivityResultContract 객체를 넣어주어야 하구요.
결과값의 콜백을 두번째 인자로 넘겨주므로, 이를 구현해서 사용하기만 하면 됩니다.
API설명에 구현예까지 자세히 나와있네요.
아래에서 갤러리에서 이미지를 가져오는 것에 대해서 구현해 보겠습니다.
2. 구현
rememberLauncherForActivityResult API구현은 워낙 간단한데요.
먼저 아래와 같이 launcher를 만들어 줍니다.
위에서 본 것처럼, 두번째 인자로 콜백을 넘겨주므로 이를 구현해 주면 되는데요.
위에서 사용하였던 GetContent()는 ActivityResultContracts의 객체입니다.
첫번째 인자로 ActivityResultContracts객체가 필요한데, 저희는 유저로부터 이미지 컨텐츠를 받아와야하기 때문에,
이를 선택할 수 있도록 해주는 Contracts클래스의 객체를 사용하였습니다.
이제 버튼에서 아래와 같이 Mime타입을 정해서 launch를 해 주기만 하면 됩니다.
이렇게 하면 galleryLauncher에 uri가 들어오게 되고, 그것을 원하는대로 가공해서 사용하기만 하면 됩니다.
이상으로 rememberLauncherForActivityResult 를 이용해서 Activity Result를 가져오는 방법에 대해서 정리해 보았습니다.
'Android Jetpack Compose > Jetpack Compose' 카테고리의 다른 글
Jetpack Compose 화면 하단에 배치하기 (0) | 2023.03.22 |
---|---|
Jetpack Compose 에서 자간 줄이는 방법 # letterSpacing (0) | 2023.03.21 |
Button Selector 구현 방법 # 버튼 눌렸을 때 Interaction Jetpack Compose (0) | 2022.11.28 |
Jetpack Compose 에서 점선 그리는 방법 정리 # Border dashed line (0) | 2022.11.25 |
BottomBar Hide 구현방법 정리 # Android Jetpack Compose (0) | 2022.11.22 |
Scaffold, SnackBar 그리고 FloatingActionButton 정리 # Jetpack Compose UI Part3 (0) | 2022.11.15 |
State 를 이해하고 TextField 구현하기 # Jetpack Compose UI Part2 (0) | 2022.11.14 |
Jetpack Compose UI Part1 # Color Card Modifier Column Row (0) | 2022.11.11 |
Time Picker 와 Date Picker Compose 로 구현하기 # Android Jetpack Picker (0) | 2022.10.31 |
ConstraintLayout 을 Compose 로 구현하는 방법 # Android (0) | 2022.10.20 |
댓글