'onBackPressed(): Unit' is deprecated. Overrides deprecated member in 'androidx.core.app.ComponentActivity'. Deprecated in Java
This declaration overrides deprecated member but not marked as deprecated itself. This deprecation won't be inherited in future releases. Please add @Deprecated annotation or suppress. See https://youtrack.jetbrains.com/issue/KT-47902 for details
안드로이드에서 onBackPressed()는 뒤로 가기 버튼을 눌렀을 때 실행되는 콜백 메소드이다.
이전에는 이 메소드를 사용하여 뒤로 가기 버튼이 눌렸을 때의 동작을 정의했지만,
최신 버전(targetSdk 33 : 안드로이드 13 이후)의 안드로이드에서는 onBackPressed()가 deprecated 되었다고 한다. 😂
대신, OnBackPressedCallback을 사용하여 뒤로 가기 버튼 동작을 정의할 수 있다.
OnBackPressedCallback은 OnBackPressedDispatcher를 통해 등록되고, 뒤로 가기 버튼을 누를 때마다 실행된다.
여기서 true는 이 콜백이 활성화되어 있어야 하는지를 나타내는 매개변수.
true로 설정하면 활성화.
만약 false로 설정하면, 나중에 isEnabled 속성을 사용하여 콜백을 활성화시킬 수 있다.
class MainActivity : AppCompatActivity() {
...
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// 뒤로가기 시 실행할 코드
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mContext = this
binding = ActivityMainBinding.inflate(layoutInflater).also {
setContentView(it.root)
}
this.onBackPressedDispatcher.addCallback(this,onBackPressedCallback) // 뒤로가기 콜백
...
}
}
addCallback 메소드는 OnBackPressedDispatcher 에 새로운 OnBackPressedCallback 을 등록.
이렇게 등록된 콜백은 handleOnBackPressed 메소드에서 정의된 작업을 수행한다.
참고 : https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher
https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher