u011042984 2023-11-20 09:27 采纳率: 40%
浏览 3
已结题

webview contenteditable 跳转后返回不能保存(续)

继续上次问题:参照链接 https://ask.csdn.net/questions/8031707
我在新链接打开前保存当前页面到历史,如下:

        webview.setWebViewClient(new WebViewClient(){
            
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                webview.saveState(bundle);
                return false;
            }
        });

但是 bundle哪里获取,或如何赋值呢? 查看网上资料,基本上都是在关闭或转到后台时的回调函数onSaveInstanceState(Bundle outState)中获取bundle,但是跳转页面,不能触发这一个回调函数。因为页面没有关闭,没有转到后台。希望能获得指教。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-20 12:06
    关注

    【以下回答由 GPT 生成】

    解决方案:

    在 Android 中,WebView 的状态保存可以使用 Bundle 来实现。但是由于在跳转页面时 onSaveInstanceState 方法不会触发,我们需要找到其他方法来获取和保存 WebView 的状态。以下是一种可能的解决方案:

    1. 首先,在跳转链接之前,我们需要创建一个 Bundle 对象来保存 WebView 的状态。我们可以使用 Bundle 类的 putParcelable 方法来实现。在点击链接跳转之前,在 WebViewClient 的 shouldOverrideUrlLoading 方法中加入以下代码:
    Bundle bundle = new Bundle();
    webview.saveState(bundle);
    
    1. 然后,我们需要在跳转页面之后,恢复 WebView 的状态。我们可以使用 WebView 的 restoreState 方法来实现。在加载页面之后,在 WebViewClient 的 onPageFinished 方法中加入以下代码:
    webview.restoreState(bundle);
    

    以下是完整的示例代码:

    WebView webview = findViewById(R.id.webview);
    Bundle bundle = new Bundle(); // 创建一个 Bundle 对象
    
    webview.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            webview.saveState(bundle); // 保存 WebView 的状态
            return false;
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            webview.restoreState(bundle); // 恢复 WebView 的状态
        }
    });
    
    // 加载页面
    webview.loadUrl("https://example.com");
    

    请注意,这种解决方案可能仅适用于简单的 WebView 内容保存和恢复,对于复杂的 WebView 页面,可能需要更多的处理。另外,bundle 的获取和赋值需要根据您的具体情况进行修改。希望对您有所帮助。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月20日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见