Archives
Recent Posts
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[코틀린] onBackPressed() 메서드 대체 -> OnBackPressedCallback() 본문

오류 해결

[코틀린] onBackPressed() 메서드 대체 -> OnBackPressedCallback()

Wise-99 2023. 5. 7. 01:19
override fun onBackPressed() {
    if(layoutDrawer.isDrawerOpen(GravityCompat.START)) {
        layoutDrawer.closeDrawers()
    }
    else {
        super.onBackPressed()
    }
}

예전 영상을 보니 이렇게 하길래 따라했더니 super.onBackPressed() 가 지워져있었다.​

찾아보니 onBackPressed()가 API 레벨 33부터 더이상 사용되지 않는다고 한다.

 

 

 

 

맞춤 뒤로 탐색 기능 제공  |  Android 개발자  |  Android Developers

맞춤 뒤로 탐색 기능 제공 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 뒤로 탐색 기능은 사용자가 이전에 방문한 화면 기록을 통해 뒤로 이동하는 기능

developer.android.com

 

onBackPressedCallback()을 대신 사용하라고 알려주고 있다.

onBackPressedDispatcher()를 onCreate()에 추가해줘야 한다.

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
    }
    ...

private val onBackPressedCallback = object : OnBackPressedCallback(true) {
        override fun handleOnBackPressed() {
            if(layoutDrawer.isDrawerOpen(GravityCompat.START)){
                layoutDrawer.closeDrawers()
            }
            else {
                finish()
            }
        }
    }