我有一个应用程序,其中主要活动(扩展了 ComponentActivity)几乎只是一个 webView。我已经重写了 onBackPressed,如下所示。
@Override
public void onBackPressed(){
if(this.webView.canGoBack){
this.webView.goBack();
}
else{
super.onBackPressed();
}
}
我这样做是为了当有浏览器历史记录时,它应该经历它而不是取消应用程序本身。当在装有 android 11 的平板电脑上运行我的应用程序时,这有效,但在装有 android 13 的手机上运行时不起作用。现在,当 onBackPressed 被弃用时,我真的不知道如何替换它并保持相同的行为。
尝试使用 onBackPressedDispatcher 代替,但没有成功。不知道是我的做法不对,还是我处理方式不对。
也许你可以使用 onKeyDown 事件?
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true
}
return super.onKeyDown(keyCode, event)
}
科特林:
val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
webView.goBack()
}
}
onBackPressedDispatcher.addCallback(onBackPressedCallback)