안드로이드 개발자의 창고
[코틀린] onBackPressed() 메서드 대체 -> OnBackPressedCallback() 본문
override fun onBackPressed() {
if(layoutDrawer.isDrawerOpen(GravityCompat.START)) {
layoutDrawer.closeDrawers()
}
else {
super.onBackPressed()
}
}
예전 영상을 보니 이렇게 하길래 따라했더니 super.onBackPressed() 가 지워져있었다.
찾아보니 onBackPressed()가 API 레벨 33부터 더이상 사용되지 않는다고 한다.
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()
}
}
}