Fragment 위에 또 다른 화면을 띄워야 했다. 새로 띄울 화면은 배경이 반투명으로, 기존의 화면이 비쳐 보여야했기 때문에 새로운 Fragment를 띄우는 것이 아닌 View로 덮어 씌우는 방식을 선택 했다.
이런 식으로 구현하니 뒤로가기 처리가 문제가 되었는데, onBackPressedDispatcher를 이용해서 간단히 해결할 수 있었다.
onBackPressedCallback 정의
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// 특정 뷰가 보일 떈 직접처리
if(bind.clSelectAssessment.isVisible){
hideSelectAssessment()
} else {
// 특정 뷰가 보이지 않을 땐 기존 동작으로 처리
isEnabled = false
requireActivity().onBackPressedDispatcher.onBackPressed()
isEnabled = true
}
}
}
onBackPressedDispatcher에 callback 등록
private fun initBackPressed(){
// 특정 Fragment에서만 뒤로가기 이벤트를 처리해야하는 경우
// addCallback 메소드의 인자로 owner를 전달할 수 있다.
requireActivity().onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
'안드로이드 > 이론' 카테고리의 다른 글
[ 안드로이드 ] style.xml을 이용하여 공통 속성 정의하기 (0) | 2023.10.10 |
---|---|
[ 안드로이드 ] View에 블러처리 하기 - BlurView 라이브러리 (0) | 2023.09.17 |
[ 안드로이드 ] RecyclerView - StaggeredLayoutManager 아이템 위치에 따라 여백 설정하기 (0) | 2023.08.22 |
[ 안드로이드 ] WebView 동영상 전체화면 처리 ( + 상단바 숨기기) (0) | 2023.07.12 |
[ 안드로이드 ] ViewPager2 안에 WebView 중첩 Swipe 처리 (0) | 2023.07.12 |