원본출처: 티스토리 바로가기
Jetpack Compose는 개발자가 아름답고 반응이 빠르고 효율적인 사용자 인터페이스를 쉽게 빌드할 수 있는 최신 Android UI 도구 키트입니다. Android 개발의 일반적인 작업 중 하나는 뒤로 버튼 누름 이벤트를 처리하는 것입니다.
이 블로그 게시물에서는 Jetpack Compose에서 뒤로 버튼 누르기 이벤트를 처리하는 방법을 살펴보겠습니다.
Android에서 뒤로 버튼은 거의 모든 Android 기기에 있는 하드웨어 버튼입니다.
뒤로 버튼은 앱의 이전 화면이나 활동으로 돌아가는 데 사용됩니다. 뒤로 버튼 누르기 이벤트는 기본적으로 Android 시스템에서 처리하지만 때때로 이 동작을 재정의하고 뒤로 버튼 누르기 이벤트를 직접 처리하려고 합니다.
Jetpack Compose에서는 속성을 사용하여 뒤로 버튼 누름 이벤트를 처리할 수 있습니다 onBackPressedDispatcher. 이 onBackPressedDispatcher속성은 뒤로 버튼 누름 이벤트를 처리하기 위해 개체를 OnBackPressedDispatcherOwner등록할 수 있는 인터페이스입니다
OnBackPressedCallback.
onBackPressedDispatcher속성을 사용하여 Jetpack Compose에서 뒤로 버튼 누름 이벤트를 처리하는 방법을 살펴보겠습니다 .
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedDispatcherOwner import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext @Composable fun BackPressHandler( enabled: Boolean = true, onBackPressed: () -> Unit ) { val backPressedDispatcher = (LocalContext.current as? OnBackPressedDispatcherOwner)?.onBackPressedDispatcher val callback = remember { object : OnBackPressedCallback(enabled) { override fun handleOnBackPressed() { onBackPressed() } } } DisposableEffect(callback) { backPressedDispatcher?.addCallback(callback) onDispose { callback.remove() } } }
위의 코드에서 이름이 구성 가능한 함수를 만들었습니다 BackPressHandler. 이 함수는 두 개의 매개변수를 사용합니다.
- enabled: 뒤로 버튼 누름 이벤트 처리 여부를 지정하는 부울 값입니다. 기본적으로 로 설정되어 있습니다 true.
- onBackPressed: 뒤로 버튼을 눌렀을 때 호출되는 람다 함수입니다.
함수에서 먼저 속성 에서 개체를 BackPressHandler가져옵니다 . 그런 다음 함수를 사용하여 개체를 만듭니다 . 객체 는 뒤로 버튼을 누를 때 호출되는 함수를 재정의합니다 . 함수 에서 뒤로 버튼 누름 이벤트를 처리하기 위해 람다 함수를 호출합니다
. onBackPressedDispatcherLocalContext.currentOnBackPressedCallbac krememberOnBackPressedCallbackhandleOnBackPressedhandleOnBackPr essedonBackPressed
그런 다음 함수를 사용하여 개체에 개체를 DisposableEffect등록 및 등록 취소합니다 . 개체가 생성 되면 메서드를 사용하여 개체 에 추가합니다. 컴포저블이 삭제되면 메서드를 사용하여 객체에서 객체를 제거합니다
. OnBackPressedCallbackonBackPressedDispatchercallbackonBackPress edDispatcheraddCallbackBackPressHandlercallbackonBackPressedDis patcherremove
컴포저블을 사용하려면 BackPressHandlerJetpack Compose 계층 구조에서 간단히 호출하고 onBackPressed람다 함수를 전달하여 뒤로 버튼 누르기 이벤트를 처리하면 됩니다.
@Composable fun MyScreen() { BackPressHandler(onBackPressed = { /* Handle back button press event */ }) { // Screen content } }
MyScreen. 은 BackPressHandler위의 코드에서는 컴포저블 내부에서 컴포저블을 호출했습니다
화면의 내용은 BackPressHandler onBackPressed뒤로 버튼 누름 이벤트를 처리하기 위해 람다 함수를 전달했습니다.
이렇게 오늘도 글 하나를 open GPT을 활용해서 작성해 보았습니다. 직역을 하고 있어서 말의 앞 뒤가 좀 애매한 구석이 없지 않지만, 나름 기술적인 부분에 대해서는 구글 검색을 하는 것만큼이나 기술해 주고 있습니다.
이제 이 코드를 실전에 적용해 보도록 하겠습니다. 도전해 볼 필요가 있는 것 같습니다.
아래는 참고 글 하나 찾아보았습니다.
https://medium.com/better-programming/back-press-handling-in-android-jetpack-compose-42d9ed402d40
댓글
댓글 쓰기