😇

android onBackPressed deprecated

2022/09/06に公開

Android API 33 で onBackPressed() の呼び出し、オーバーライドが非推奨になった時の対処方法

基本は OnBackPressedDispatcher をかますだけ

override fun onBackPressed() の処理を ComponentActivity.getOnBackPressedDispatcher().addCallback に移動
呼び出しは getOnBackPressedDispatcher().onBackPressed() に変更
親の呼び出しは finish() に変更するればOK

before

    override fun onCreate(savedInstanceState: Bundle?) {
        ..
	
	button.setOnClickListener {
	    onBackPressed()
        }
    
    }

    override fun onBackPressed() {
        if (isHoge) {
	    hoge()
        } else {
            super.onBackPressed()
        }
    }

after

    override fun onCreate(savedInstanceState: Bundle?) {
        ..
	
	button.setOnClickListener {
            onBackPressedDispatcher.onBackPressed()
        }

        onBackPressedDispatcher.addCallback(this) {
            if (isHoge) {
                hoge()
            } else {
	        finish()
            }
        }
    
    }

「戻る」ジェスチャー ナビゲーションをサポートのため変更になる模様
https://codelabs.developers.google.com/handling-gesture-back-navigation?hl=ja&authuser=1#0

Discussion