private fun setBackPressedCallback() {
val dispatcher = onBackPressedDispatcher
val onBackPressedCallback: OnBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (binding.바인딩된 웹뷰이름.canGoBack()) {
binding.바인딩된 웹뷰이름.goBack()
showToast("이전 페이지로 이동합니다.")
} else {
handleAppExit()
}
}
}
dispatcher.addCallback(this, onBackPressedCallback)
}
backstack 이 기존에 사용했을때는 backstack만 사용했는데 변경되어서 onBackPressedCallback 을 통해서 한번 backstack 하면 뒤로 가기가 되고 두번 backstack 시 종료되도록 구현할수있다.
추가로
하단은 두번 backstack 시 종료되는 코드이다.
private fun handleAppExit() {
// 2초 안에 두번 backstack 시 앱 종료
if (doubleBackToExitPressedOnce) {
finish()
} else {
showToast("한 번 더 뒤로 가기를 누르면 종료됩니다.")
doubleBackToExitPressedOnce = true
Handler(Looper.myLooper()!!).postDelayed({ doubleBackToExitPressedOnce = false }, 2000)
}
}
그전에 먼저
private var doubleBackToExitPressedOnce = false // backstack setting
backstack 에 대한 선언을 해주었다.
그리고 onCreate 안에
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
setBackPressedCallback()
...
}
setBackPressedCallback 을 선언해주었다.
'[study]Android > Android(Kotlin & Java)' 카테고리의 다른 글
webview 네트워크 체크(TRANSPORT_WIFI & TRANSPORT_CELLULAR) (0) | 2024.01.05 |
---|---|
ViewBinding - kotlin (0) | 2024.01.05 |
Webview: 카카오톡 친구페이지로 이동하기 - kotlin (0) | 2024.01.05 |
디버그 서명 인증서 (SHA-1) (0) | 2023.12.05 |
해시키 구하기(Hash key) - Java (0) | 2023.12.05 |