You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebViewClient无onBackPressed方法?如何实现WebView返回键响应逻辑

问题解答

关于onBackPressed是否废弃的说明

onBackPressed 不属于 WebViewClient 的API,它是Android Activity 类提供的系统返回键响应方法,所以你在WebViewClient的官方文档里找不到相关内容,该方法也没有被废弃,只是你查询的文档对象有误。

实现返回键优先回退WebView页面的逻辑

你写的代码逻辑本身就是正确可用的,根据使用场景不同,实现方式如下:

1. 在Activity中使用WebView

直接重写Activity的onBackPressed方法即可,代码如下:

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

逻辑说明:

  • 调用webView.canGoBack()判断当前WebView是否有可回退的历史浏览记录
  • 存在可回退记录时调用webView.goBack()回到上一个浏览页面
  • 没有可回退记录时调用父类方法,执行系统默认返回逻辑,关闭当前Activity

2. 在Fragment中使用WebView

如果是在Fragment中加载WebView,推荐使用OnBackPressedCallback适配返回逻辑,避免和宿主Activity的返回事件冲突:

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    // 注册返回键回调
    requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            if (webView.canGoBack()) {
                webView.goBack();
            } else {
                // 没有可回退记录时移除当前回调,走默认返回逻辑
                setEnabled(false);
                requireActivity().onBackPressed();
            }
        }
    });
}

内容的提问来源于stack exchange,提问作者blue piranha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:15:08