onBackPressed () 란?
액티비티에서 사용자가 뒤로 가기 키를 눌렀을때 이를 감지하여 호출되는 메서드입니다.
주로 뒤로 가기 클릭 시 행동을 제어할 때 사용했습니다.
하지만 API 레벨 33부터 더이상 사용되지 않는다고 안드로이드 디벨로퍼 공식문서에 명시되었고
대신 OnBackInvokedCallback 또는 androidx.activity.OnBackPressedCallback 를 사용하기를 권고하고 있습니다.
FragmentActivity와 AppCompatActivity의 기본 클래스인
ComponentActivity를 사용하면 OnBackPressedDispatcher(getOnBackPressedDispatcher()를 호출하여 가져옴)를 사용하여 뒤로 버튼의 동작을 제어할 수 있습니다.
OnBackPressedDispatcher 사용법
사용자가 뒤로가기 버튼을 탭하거나 뒤로 가기 제스쳐를 했을때(제스쳐가 활성화되어 있을때) 콜백이 호출되고 활성화 됩니다.
class MyActivity : AppCompatActivity() {
private val TAG = this.javaClass.simpleName
//콜백 인스턴스 생성
private val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// 뒤로 버튼 이벤트 처리
Log.e(TAG, "뒤로가기 클릭")
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my)
this.onBackPressedDispatcher.addCallback(this, callback) //위에서 생성한 콜백 인스턴스 붙여주기
}
}
728x90