onBackPressed() deprecated issuede

2023. 3. 10. 16:16개발/Android

이제 쓸 수...없다......onBackpressed...................................................

 

 

 

 

 

 

이렇게 된김에

 

deprecated 된 onBackPressed()를 핸들링해보자

 

아래와 같이 할 수 있다

 

 

 

 

 

 

 

 

Activity 내부에서

fun AppCompatActivity.onBackPressed(isEnabled: Boolean, callback: () -> Unit) {
    onBackPressedDispatcher.addCallback(this,
        object : OnBackPressedCallback(isEnabled) {
            override fun handleOnBackPressed() {
                callback()
            }
        })
}
// How To Use it : 
class ExampleActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_example)
        onBackPressed(true) {
            // do what do you want when get back 
        }
    }
}

Fragment 내부에서

fun FragmentActivity.onBackPressed(callback: () -> Unit) {
    onBackPressedDispatcher.addCallback(this,
        object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
                callback()
            }
        }
    )
}
// How To Use it :
class ExampleFragment : Fragment() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        requireActivity().onBackPressed {
            // do what do you want when get back 
        }
    }
}

위와 같이 사용하려면

activity의 dependency가 androidx.activity:activity:1.+.+”이어야만 한다