💌 [Android/Kotlin] onBackPressed() deprecated -> OnBackPressedCallback 변경

'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를 통해 등록되고, 뒤로 가기 버튼을 누를 때마다 실행된다.

📌 OnBackPressedCallback 정의

여기서 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

addCallback 메소드는 OnBackPressedDispatcher 에 새로운 OnBackPressedCallback 을 등록.
이렇게 등록된 콜백은 handleOnBackPressed 메소드에서 정의된 작업을 수행한다.

참고 : https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher
https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher

profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글