微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 保存WebView的状态并重新加载位置

我知道有很多关于这个问题,但他们似乎都老了,不再工作了 – 至少对我来说.我试图在用户退出或重新加载应用程序后保存网页视图的位置.我知道这个代码可以用来保存和加载Webview:
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    myWebview.saveState(outState);
}

并在onCreate:

if (savedInstanceState != null) {
    myWebview.restoreState(savedInstanceState);
}

但是,在Android开发者Webview页面中,它说明了关于saveState的以下内容

“保存在onSaveInstanceState(Bundle)中使用的此WebView的状态请注意,此方法不再存储此WebView的显示数据.如果restoreState(Bundle)未被调用,以前的行为可能会潜在泄漏文件.

链接https://developer.android.com/reference/android/webkit/WebView.html

如果我错了,这是支持工作的,那么可能是我实现另一个功能来保存WebView中显示页面的微调框选择,并以与上面显示的非常相似的方式加载.也许使用两者不允许WebView的位置被加载,只有页面?当用户重新加载应用程序时,我目前正在保存哪些HTML页面加载到WebView中.

我的创建:

if (savedInstanceState != null){
    mySpinner.setSelection(prefs.getInt("spinnerSelection",0));
}

我的onSaveInstance状态:

@Override
public void onSaveInstanceState(Bundle savedInstanceState){

    SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getBaseContext());
    SharedPreferences.Editor editor = getPrefs.edit();

    values = Integer.parseInt(getPrefs.getString("pref_Sections","1"));
    switch (values) {
        case 1:
            int selectedPosition1 = mySpinner.getSelectedItemPosition();
            editor.putInt("spinnerSelection1",selectedPosition1);
            editor.commit();
            break;
        case 2:
            int selectedPosition2 = mySpinner.getSelectedItemPosition();
            editor.putInt("spinnerSelection2",selectedPosition2);
            editor.commit();
            break;
    }
    super.onSaveInstanceState(savedInstanceState);
}

有没有人对此问题有任何反馈意见,还是仅仅在Android Developer WebView中所描述的不再工作?我正在考虑一个数学解决方案,但是在这个时刻,我的专业知识是有限的,我必须更多地了解(加上我不喜欢数学一般!)

感谢所有回复

解决方法

您可以使用 getScrollY()获取您的Webview的垂直位置.将其保存在onSaveInstanceState中

然后,使用scrollTo(x,y)恢复位置:

yourWebview.scrollTo(0,savedYPosition);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


应用场景 C端用户提交工单、工单创建完成之后、会发布一条工单创建完成的消息事件(异步消息)、MQ消费者收到消息之后、会通知各处理器处理该消息、各处理器处理完后都会发布一条将该工单写入搜索引擎的消息、最终该工单出现在搜索引擎、被工单处理人检索和处理。 事故异常体现 1、异常体现 从工单的流转记录发现、
线程类,设置有一个公共资源 package cn.org.chris.concurrent; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @Descrip
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量
Java 9中JShell中的不同启动脚本是什么?
使用Java的位填充错误检测技术
java中string是什么
如何使用Java中的JSON-lib API将Map转换为JSON对象?