본문 바로가기

카테고리 없음

onBackPressed()

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