onBackPressed 已弃用 - android 应用程序中的 webView

问题描述 投票:0回答:2

我有一个应用程序,其中主要活动(扩展了 ComponentActivity)几乎只是一个 webView。我已经重写了 onBackPressed,如下所示。

@Override
public void onBackPressed(){
  if(this.webView.canGoBack){
    this.webView.goBack();
  }
  else{
    super.onBackPressed();
  }
}

我这样做是为了当有浏览器历史记录时,它应该经历它而不是取消应用程序本身。当在装有 android 11 的平板电脑上运行我的应用程序时,这有效,但在装有 android 13 的手机上运行时不起作用。现在,当 onBackPressed 被弃用时,我真的不知道如何替换它并保持相同的行为。

尝试使用 onBackPressedDispatcher 代替,但没有成功。不知道是我的做法不对,还是我处理方式不对。

java android kotlin callback android-webview
2个回答
0
投票

也许你可以使用 onKeyDown 事件?

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {

    if (keyCode == KeyEvent.KEYCODE_BACK) {
        return true
    }

    return super.onKeyDown(keyCode, event)
}

0
投票

科特林:

val onBackPressedCallback = object : OnBackPressedCallback(true) {
    override fun handleOnBackPressed() {
        webView.goBack()
    }
}
onBackPressedDispatcher.addCallback(onBackPressedCallback)
© www.soinside.com 2019 - 2024. All rights reserved.