안드로이드 개발자의 창고
[코틀린] onBackPressed() 메서드 대체 -> OnBackPressedCallback() 본문
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()
}
}
}